我想知道是否有办法生成3D对象的单个静态图像(1个单个对象表示为三角形列表),使用OpenGL或DirectX,可以让您知道定义对象的特定三角形已经用于生成形成渲染图像的每个像素。我引用了OpenGL和DirectX,因为它们是广泛使用的API图形,如果有人知道实现以前高速工作的其他方法我也会对他/她的答案感兴趣。我目前使用自己的渲染管道软件实现来跟踪关系,但我想使用显卡提供的功能和效果(主要是抗锯齿,阴影和特定的皮肤渲染技术)。
非常感谢你的帮助
答案 0 :(得分:5)
当然,只需将三角形标识符输出到单独的渲染目标(使用MRT)。在GLSL术语中,这是gl_PrimitiveID,在HLSL术语中,它是SV_PrimitiveID。如果您正在使用多次采样,那么该渲染目标的多样本缓冲区将成为每个像素的基元列表。
答案 1 :(得分:1)
以不同颜色绘制每个三角形。 R8G8B8为您提供了大约1670万种可能的颜色,因此可以用它来索引该三角形的数量。您不必绘制到屏幕缓冲区。您可以像往常一样渲染图片,并渲染到第二个目标,在屏幕外缓冲区中索引三角形。