Здравствуйте!
Необходимo настроить OpenGL-контекст под решение специфической задачи построения карты текстурных координат и идентификаторов объектов.
В паре с обычным RGBQUAD буфером пикселей используется буфер с следующей структурой отношений пикселей к объектам:
Код:
struct {
DWORD x:12; // 11…0 : Биты X-позиции в текстуре [0…4095]
DWORD y:12; // 23…12: Биты Y-позиции в текстуре [0…4095]
DWORD id:8; // 31…24: Биты Идентификатора текстуры/объекта
} … … …
Тaк, сначала одна и та же сцена отрисовывается дважды в разных контекстах.
В первом контексте отрисовка происходит стандартно в цветах. А во втором контексте необходимо ту же сцену отрисовать не цветовыми текстурами, а координатными.
Проще говоря, наводя в сцене указатель на какой-либо объект, из второго буфера по тем же координатам берётся информация id:y:x, чтобы узнать индекс текстуры и координаты относительно самой текстуры.
Дoпустим, используя особую текстуру с линейным заполнением, планировалось подсвечивать источником света с кодом идентификатора каждый конкретный объект. На деле же, как оказалось, id-биты приходится отдельным циклом закрашивать, а x:y имеют очень сильные радиальные искажения в сторону муара.
До этого успешно использовал собственный алгоритм с построением линий без OpenGL вообще.
Линии окрашивали пиксели не цветами, а самими координатами относительно конкретных линий к конкретному пикселу. Однако, не учитывалась логарифмическая глубина перспективы и при построении плоскости в пространстве этим алгоритмом обратное неафинное преобразование приводит к перфорациии плоскости: Некоторые пиксели просто не заполнялись. Имeются ли стандартные встроенные OpenGL-средства с методами выделения и буферизации конкретных относительных координат на объектах сцены?
Спасибо!