& quot; карта объектов & quot; в opengl

Короче говоря: как мы все знаем, opengl рисует много треугольников на экране.

Что я хочу знать:

Если opengl рисует треугольники, он должен знать, какой треугольник принадлежит какому пикселю на экране, верно?

Могу ли я получить эту информацию тоже? Например, вызвать функцию после розыгрыша (например, gl_retrieve_object_map() или что-нибудь подобное) где я узнаю, какой пиксель показывает какой треугольник?

это как делать собирание за каждый пиксель

Я имею в виду двумерный массив, сообщающий мне индекс треугольника или что-то еще:

на экране 10×10 пикселей, например:

0 0 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 2 0
0 0 0 0 1 1 1 2 2 0
0 0 0 0 0 1 1 2 2 0
0 0 0 0 0 2 1 2 2 0
0 0 0 0 2 2 2 2 2 0
0 0 0 2 2 2 2 2 2 0
0 0 2 2 2 2 2 2 2 0
0 2 2 2 2 2 2 2 2 0
0 0 0 0 0 0 0 0 0 0

для изображения как:

   ___
\  |
\ |
\|/|
/ |
/  |
/   |
/____|

Есть ли что-нибудь, что я мог бы использовать?

0

Решение

OpenGL фактически не имеет этой информации после того, как что-то нарисовано. OpenGL имеет несколько буферов, включая (среди прочего) буфер цвета и буфер глубины, но он не имеет буфера, который содержит индекс для каждого нарисованного примитива.

Но это не значит, что вам не повезло. Одна вещь, которую я видел в приложениях, это удаление всех световых эффектов и придание каждому объекту уникального цвета. Затем он отображает сцену в буфер за пределами экрана. Тогда этот внеэкранный буфер содержит именно ту информацию, которую вы хотите.

4

Другие решения

Если opengl рисует треугольники, он должен знать, какой треугольник принадлежит какому пикселю на экране, верно?

Нет. OpenGL рисует треугольники в том порядке, в котором их просят нарисовать, по одному треугольнику за раз. Программа просит его «нарисовать треугольник между координатами A, B и C», и OpenGL будет делать это время от времени (ну, на самом деле, он будет группировать эти команды).

Таким образом, до того, как треугольник был нарисован, есть только атрибуты вершины, которые определяют его положение. Затем для каждого треугольника в списке он рисуется, и тогда единственное, что остается позади, это цветные пиксели без них и информация о том, какие треугольники их создали.

1

По вопросам рекламы [email protected]