Можно ли визуализировать сцену с несколькими текстурами за один проход с помощью Xna? - PullRequest
0 голосов
/ 02 августа 2010

Мне интересно, можно ли визуализировать сцену для нескольких целей рендеринга за один проход (или что-нибудь быстрее, чем рисовать ее несколько раз через клиентский код).Я хочу оптимизировать некоторый код, который отображается для нескольких текстур разных размеров (например, 512 на 512, 256 на 256, 128 на 128 и 64 на 64).

Я понимаю, что могу использовать mip-карты, полученные из исходной цели, но я не хочу смешивать цвета.Я подозреваю, что mip mapping будет в среднем от нескольких текселей, но для моих целей я просто хочу необрабатываемый рендеринг, как это делает видеокарта.Если есть какие-либо настройки для мипмапов, которые позволяют это, то это также значимо в качестве возможного решения.

Кстати, кто-нибудь знает, генерируются ли мипмапы в ЦП или ГП?Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Нет возможного решения вашего вопроса.МРТ не могут работать с разными разрешениями.Mipmaping не может создавать меньшие текстуры, которые выглядят точно так же, как оригинал.На самом деле, нет никакого способа сделать это AFAIK.С новыми видеокартами, mipmaps генерируются на GPU.Один вопрос: почему вы рендеринг на квадратные цели?

0 голосов
/ 02 августа 2010

Как говорит Куанг Ань - нет способа сделать именно то, что вы просите. Так чего же вы на самом деле пытаетесь достичь?

Если вас беспокоит смешивание, которое имеет место при уменьшении масштаба для мипмапов, почему бы не взять вашу цель рендеринга и визуализировать ее (в «полноэкранном» квадре) в другую цель рендеринга, используя точечная выборка ? (И повторите это для каждого размера, который вы хотите.)


Добавлены следующие комментарии:

Если то, что вы делаете, связано с глубиной (или данными, подобными глубине), и вам нужно знать максимальную (или минимальную) глубину на пиксель, и вы каждый раз вдвое уменьшаете разрешение своего изображения:

Вы можете использовать ту же технику масштабирования, переводя одну цель рендеринга в другую с точечной выборкой (как описано в моем исходном ответе выше). И в образце пиксельного шейдера четыре пикселя, которые станут одним пикселем в выходном изображении. Просто выберите максимальный (или минимальный) значимый пиксель из четырех в качестве одного для вывода.

(Я оставлю математику, необходимую для выстраивания образцов в качестве упражнения.)

...