我当前的渲染实现如下:
v0 v1 v2 v2
)lines_adjacency
传递给几何着色器triangle_strip
我走这条路的原因是因为我正在实现一个线框着色器,我想绘制没有对角线的四边形。但是,我已经放弃了这个功能。
我现在想知道是否应该回到简单地绘制GL_TRIANGLES
,并将几何着色器从等式中移开。但这让我思考......从绩效的角度来看,实际上哪些更有效?
因此顶点比率为9:8(三角形:lines_adjacency)。
假设使用索引绘图,每个顶点仅由顶点着色器处理一次(而不是每个索引一次),我是否正确?在这种情况下,绘制三角形将更有效(因为没有额外的几何着色器步骤可以执行),唯一的负面因素是指数占用的额外内存量。
然后,如果顶点做每个索引处理一次,我可以看到边缘使用lines_adjacency方法,考虑到几何转换非常简单,而顶点着色器可能运行更多密集照明计算。
所以这几乎总结了我的问题:如何使用索引绘图处理顶点,如果包含一个简单的几何着色器,可以预期会产生哪种性能影响?
答案 0 :(得分:1)
几何着色器从不在这种情况下提高效率,它们只会使原始装配过程复杂化。当您使用几何着色器时,T& L后缓存不再像最初设计的那样工作。
虽然几何着色器确实会重用顶点着色器阶段中转换的任何共享(索引)顶点,但需要获取顶点数据时,几何着色器仍会计算并发出一组唯一的顶点 每个输出原始 强>
此外,由于允许几何着色器发出可变数量的数据点,因此它们与其他着色器阶段不同。并行化几何着色器比顶点或片段要困难得多。除非你确实需要使用它们,否则我会建议使用几何着色器太多负面的东西。