В каком формате #greyscale'отображает цели в DirectX?
У меня есть игровой движок DirectX9, который создает свой обычный адаптер с таким форматом: D3DFMT_X8R8G8B8 У меня есть система, в которой я рендерирую некоторые объекты на цель закадрового рендеринга в виде световых карт. Затем я использую эти данные карты освещения для компоновки обратно в задний буфер, где они выступают в качестве полноэкранной "маски", и позволяет мне получить эффект факелов или других источников света на темной сцене. Все работает просто отлично. Проблема в том, что я знаю, что мои большие цели рендеринга внеэкранной карты освещения составляют 16 МБ каждая, при большом разрешении, и мне действительно нужно только 8 бит данных (в оттенках серого), поэтому 75% 32-битной целевой памяти рендеринга отходы. (Я нацеливаюсь на карты с низкой спецификацией). Я попытался создать цели рендеринга как D3DFMT_A8, но DirectX молча терпит неудачу на этом (если я добавляю CheckDeviceFormat(), я вижу, что это происходит) и создает 32-битную версию в любом случае. Я использую функцию D3DXCreateTexture. Мой вопрос: какой формат лучше всего подходит для создания этих закадровых буферов?
Спасибо за вашу помощь, я не очень хорош в рендере, связанном с мишенями:)
2 ответа
D3DFMT_L8 - это 8-битная яркость. Я считаю, что он поддерживается в GeForce 3 (т.е. первой потребительской карте с шейдером 1.1!), Поэтому должен быть доступен везде. Я думаю, что цвет читается как L, L, L, 1, то есть rgb = значение яркости, альфа = 1.
Редактировать: этот инструмент полезен для поиска заглавных букв:
Ontopic: Если вы нацеливаетесь на карты с более низкими характеристиками, вы, скорее всего, будете работать в системах, где 8-битные одноканальные цели рендеринга вообще не поддерживаются.
Если вы используете шейдеры для рендеринга и композитинга, должна быть возможность использовать каналы rgba для 4 чередующихся пикселей вашей карты освещения, упаковывая вашу информацию. Возможно, вы можете рассказать нам немного больше о вашей текущей настройке рендеринга?
Оффтоп: УДИВИТЕЛЬНО, что вы здесь на Stackru, большой поклонник вашей работы!