在OpenGL中哪一个会带来更好的性能。要更改剔除的脸部还是旋转我的物体?
方案如下:
我计算矩阵以输入我的着色器,这将在某个剔除位置(前方)绘制纹理A.当我从前面看到物体时,我可以看到它,但从后面我不能,这是我想要的行为。现在我想在后面添加“东西”,让我们说纹理B,这样当从后面看到对象时,这个其他纹理将出现在与纹理A相同的位置和方向,但现在有纹理B.
我认为除了构建一个有两面的立方体之外,我可以简单地“重绘”我之前对象的顶部。如果我要旋转对象,我想我可以假设OpenGL不会覆盖纹理A,因为它不会通过面部剔除测试。这需要一个额外的矩阵乘法来镜像mi对象在其自己的轴上。但是,如果我只是改变剔除属性并尝试绘制它呢?难道它不会产生与前面的文本失败但从后面传递它的效果相同的效果吗?
这两个选项中哪一个更好?
(PD:我在iPhone上这样做,因此每一位性能都与旧设备非常相关。)
谢谢。
答案 0 :(得分:0)
我不确定我是否理解正确,但听起来你是想在这里画一个广告牌?在这种情况下,您应该完全禁用背面剔除,并在片段着色器中检查gl_FrontFacing
。根据这一点,您可以翻转纹理坐标并更改纹理(只需绑定两个纹理并将它们发送到着色器)。这样你只有一个绘图调用,不需要做任何奇怪的技巧或改变OpenGL状态。