2016-12-24 71 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