Если вы выполняете фиксированное масштабирование (т. е. каждый уровень масштабирования представляет собой фиксированное расстояние от камеры), в отличие от плавного масштабирования (игрок может увеличивать масштаб в 3,3, 7,5 раза, а не только в 1, 2, 3 и т. ), то очень расточительно пытаться решить эту проблему, просто применив масштабирование. Это заманчиво, потому что это наименее сложный подход, и его легко понять с точки зрения реализации, но это означает, что при максимальном уменьшении масштаба вы будете отображать область, которая в 10 раз больше по оси X и в 10 раз больше по оси X. направление Y, поэтому площадь мира, которую вы должны визуализировать, будет в 100 раз больше, чем при максимальном увеличении. Я также сомневаюсь, что вам понравится, как ваши текстуры сжимаются аппаратным обеспечением при уменьшении масштаба. Компьютерная графика не то же самое, что оптика - субпиксельный рендеринг и другие вещи, которые происходят в компьютерной графике, не сделают ваши текстуры очень хорошими, если вы передадите эту задачу программному / аппаратному обеспечению.
Даже если вы выполняете плавное масштабирование, я бы все равно делал текстуры с уровнем детализации и динамически менял их местами в зависимости от расстояния между визуализируемым миром и камерой.
Кроме того, 10 уровней масштабирования? Вы уверены, что вам действительно нужно 10 уровней масштабирования? Масштаб обычно используется в 2D-играх, чтобы вы могли выполнять различные действия с разным уровнем детализации, потому что определенный уровень масштабирования особенно хорошо подходит для определенного набора действий. Я не помню ни одной 2D-игры, в которой для этого требовалось бы 10 уровней масштабирования. 3-5 — это максимум, что я когда-либо видел, и я никогда не чувствовал, что этого недостаточно. Также кажется, что создание изображений на каждом уровне масштабирования для 10 уровней масштабирования требует большого количества художественных работ.
Вы также, вероятно, обнаружите, что применение AffineTransform звучит как хорошая идея, но это чрезвычайно затратно в вычислительном отношении, и если вам нужна производительность 60 кадров в секунду, вы вряд ли добьетесь этого таким образом. Не верьте мне на слово, попробуйте и посмотрите, как сильно он падает сам на себя.
person
jefflunt
schedule
06.04.2012
svg
s (векторная графика). - person Jon Egeland   schedule 06.04.2012