2016-12-24 6 views
2

У меня есть треугольная сетка, которую я рендеринга в OpenGL. Мне нужно получить сопоставление каждого пикселя в полученном представлении с индексом связанного с ним многоугольника. Есть ли простой способ сделать это?Как извлечь растровые изображения многоугольника OpenGL?

Если это возможно, сделайте это легко, что бы было разумным типом данных для его хранения?

ответ

3

Нарисуйте фреймбуфер с целочисленной текстурой, поддерживая его. Вы можете использовать gl_PrimitiveID как значение в шейдере фрагмента для записи в качестве вывода. Это даст вам карту от пикселя до примитивного индекса.

+0

Обратите внимание, что 'gl_PrimitiveID' * не уникально * в командах визуализации. Он сбрасывается в начале каждой ничьей. –

+0

@DietrichEpp Итак, если я правильно понял, я бы привязал новую текстуру с помощью 'glBindTexture (GL_TEXTURE_2D, framebuffer.textures [0]); glTexImage2D (GL_TEXTURE_2D, 0, GL_R32I, ширина, высота, 0, GL_RED_INTEGER, GL_INT, gl_PrimitiveID); '? И затем прочитайте его с помощью: 'glReadPixels (0, 0, width, height, GL_RED_INTEGER, GL_INT)' – paleon12

+0

Кроме того, что было бы результатом этого для пикселей, у которых нет примитивов? – paleon12