Чтобы он был коротким: как мы все знаем, opengl рисует много треугольников на экране.
Что я хочу знать:
Если opengl рисует треугольники, он должен знать, какой треугольник принадлежит пикселю на экране, правильно?
Могу ли я получить эту информацию? Например, вызовите функцию после ничьей (например, gl_retrieve_object_map()
или что-нибудь подобное), где я узнаю, какой пиксель показывает, какой треугольник?
его как делать выбор для каждого пикселя
Я думаю о двухмерном массиве, сообщающем мне индекс треугольника или что-то еще:
на экране 10x10 пикселей, например:
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
для изображения типа:
___
\ |
\ |
\|/|
/ |
/ |
/ |
/____|
есть ли что-нибудь, что я мог бы использовать?
OpenGL фактически не имеет этой информации после того, как что-то нарисовано. OpenGL имеет несколько буферов, в том числе (среди прочих) буфера цвета и буфера глубины, но у него нет буфера, который содержит индекс для каждого примитивного рисунка.
Но это не значит, что вы не повезло. Одна вещь, которую я видел в приложениях, - это удалить все световые эффекты и дать каждому объекту уникальный цвет. Затем он отображает сцену в буфер вне экрана. Тогда этот буфер вне экрана имеет именно ту информацию, которую вы хотите.
Если opengl рисует треугольники, он должен знать, какой треугольник принадлежит пикселю на экране, правильно?
Нет. OpenGL рисует треугольники в том порядке, в котором их просят рисовать, по одному треугольнику за раз. Программа просит его "нарисовать треугольник между координатами A, B и C", и OpenGL сделает это тогда и там (ну, на самом деле, он будет выполнять эти команды до).
Таким образом, до того, как треугольник был нарисован, есть только атрибуты вершин, которые определяют его положение. Затем для каждого треугольника в списке он нарисован, а затем единственное, что осталось позади, это цветные пиксели без информации и информации о том, какие треугольники создали их.