Чтобы это было коротко: как мы все знаем, opengl рисует много треугольников на экране.«карта объектов» в opengl
То, что я хочу знать:
Если OpenGL рисует треугольники, он должен знать, что треугольник принадлежит к какой пиксель на экране, не так ли?
Могу ли я получить эту информацию? Например, вызовите функцию после ничьей (например, gl_retrieve_object_map()
или что-нибудь подобное), где я узнаю, какой пиксель показывает, какой треугольник?
его, как делают сбор для каждого пикселя
Я имею в виду в 2 одномерный массив говорит мне индекс треугольника или любой другой:
на экране 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
для изображения типа:
___
\ |
\ |
\|/|
/|
/|
/ |
/____|
есть что-нибудь, что я мог бы использовать?
Несмотря на то, что это большой взлом, это действительно крутое решение! Большое спасибо! Но musnt opengl хранит эту информацию во время розыгрыша? как он получит цвет и правильные шейдеры для объекта еще? – bricklore
@Malte: OpenGL имеет переменные, хранящие текущие шейдеры и цвета, используемые при рисовании объекта. Когда он рисует этот объект, для каждого пикселя он вычисляет глубину объекта в этом месте, и если он ближе, чем ранее записанная глубина, он будет вычислять цвет этого пикселя и перезаписывать его в цветовом буфере и учитывать новая минимальная глубина в буфере глубины. Затем, когда вы переходите к визуализации нового объекта, он перезаписывает эти переменные. Единственный след предыдущего объекта, который был визуализирован, - это цвета в буфере цвета и глубины буфера глубины. – icktoofay
хорошо, хорошо и плохо :) моя первая мысль была: shouldnt этот метод от ogl быть ужасно медленным? а также, если он может определить объект там, почему мы не можем? – bricklore