Mic*_* IV 11 c++ opengl performance opengl-4
我使用OpenGL4.X.最近我读到了这个 Apple OpenGLES2文档,其中声明使用交错属性数组可以提高IOS移动设备的性能,并且是推荐的方式(而不是使用属性块).
对于那些不明白我的意思的人来说,这是一个例子:
单个属性数组中的属性块:
float vertices[]{
//Triangle vertices:
v0x , v0y , v0z ,
v1x , v1y , v1z ,
v2x , v2y , v2z ,
//Triangle UVs:
uv0s , uv0t ,
uv1s , uv1t ,
uv2s , uv2t ,
//Triangle Normals:
n0x , n0y , n0z ,
n1x , n1y , n1z ,
n2x , n2y , n2z
}
Run Code Online (Sandbox Code Playgroud)
交错属性数组:
float vertices[]{
v0x , v0y , v0z ,
uv0s , uv0t , ////vertex 1 attributes
n0x , n0y , n0z ,
v1x , v1y , v1z ,
uv1s , uv1t , ///vertex 2 attributes
n1x , n1y , n1z ,
v2x , v2y , v2z ,
uv2s , uv2t , ///vertex 3 attributes
n2x , n2y , n2z
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:在桌面GPU上运行的OpenGL也是如此吗?如果是,那么理论上性能增益有多大?
对于在桌面GPU上运行的OpenGL也是如此吗?
作为一般规则,您应尽可能使用交错属性.显然,如果你需要改变某些属性而不是其他属性,那么将那些改变的属性与那些不改变的属性交错并不是一个好主意.
理论上性能增益有多大?
我无法回答这个问题,但我不希望有太大的进步.唯一可靠的方法是衡量.
为了使任何优化成为性能增益,它必须首先优化成为性能瓶颈的东西。除非它目前是瓶颈,否则对其采取任何措施都不一定能提高性能。
没有办法回答你的问题,因为任何性能提升首先取决于你是否在顶点传输性能上遇到瓶颈(即:优化了什么)。除非你真的很用力地推动你的显卡,以至于你的顶点着色器、片段着色器和 CPU 问题不会成为瓶颈,否则这无关紧要。
并且无法知道它的增益有多大,因为不同的硬件会有不同的响应。不同的情况会根据瓶颈的紧缩程度做出不同的反应。
只需交错你的属性。它不会花费您任何费用,只需要最少的时间或精力,并且在性能方面可能具有重要的价值。
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |