每个帧统一生成一个图像。我希望它还会创建一个附加的int数组,并且每次决定在生成的图像上写入一种新颜色时,都将在该int数组中的对应位置上写入对象的ID。
在OpenGL中,我知道这很普遍,并且我找到了很多有关此类内容的教程,基本上是根据深度图来确定应该在辅助数组的每个像素上写入哪个id。但是我统一使用给定的着色器,但我没有找到正确的方法来做到这一点。我认为应该针对此类常见问题构建函数。
我的目标是知道屏幕上每个像素属于哪个对象。
谢谢。
答案 0 :(得分:0)
在正向渲染中,如果您不将其用于其他目的,则可以将ID存储到后缓冲区的alpha通道中(并且仅对不透明的对象有效),最多可以有256个ID,而无需HDR。如果推迟,您可以编辑gbuffer的未使用通道。
这是为了最大程度地减少开销,否则您可以拥有一个更通用的系统,将特定对象重新渲染到屏幕空间中的纹理中,而这是一个非常简单的着色器,它使用命令将ID输出为所需的任何格式缓冲区。