OpenGL:将Z深度设置为统一深度,而不是冗余存储在顶点内

OpenGL: Setting Z depth as a uniform vs. stored redundantly within vertices

本文关键字:深度 冗余 存储 顶点 设置 OpenGL      更新时间:2023-10-16

OpenGL中的2D渲染引擎通常会使用四边形渲染2D图像,四边形在相同的Z深度上各包含4个顶点。对于纹理坐标,这些顶点通常由(X,Y,Z)和(U,V)组成。

然而,由于任何给定图像的所有4个顶点都将始终占据相同的深度,因此每个垂直线只上传(X、Y、U、V)并在着色器中将其Z深度设置为单独的统一体会更好吗?或者,在实践中,每4个顶点更新一个统一体的成本会太高吗?

你绝对可以随心所欲。它不会产生任何可检测的差异——当您将以数百万个片段着色器实例的顺序运行相同的4个顶点着色器执行时,您对4个顶点所做的任何更改实际上都不可能对性能产生任何影响。

就我个人而言,我根本不为四边形使用属性——我使用顶点ID在4个固定值之间切换,这使我根本不必使用缓冲区。