2016-12-24 35 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,width,height,0,GL_RED_INTEGER,GL_INT,gl_PrimitiveID);'?然后读回:'glReadPixels(0,0,width,height,GL_RED_INTEGER,GL_INT)' – paleon12

+0

另外,对于没有任何原语的像素,结果是什么? – paleon12