2013-04-24 47 views
0

在OpenGL中哪一个会导致更好的性能。要改变剔除的脸部或旋转我的物体?旋转一个物体或改变剔除的脸?

的场景是以下内容:

我计算矩阵馈送到我的着色器,这将绘制纹理甲在一定的位置剔除(前)。当我看到面前的物品时,我可以看到它,但从后面我不能,这是我期望的行为。现在我想在后面添加“东西”,让我们说纹理B,这样当从后面看到对象时,这个其他纹理将以与纹理A相同的位置和方向出现,但现在与纹理B相同。

我认为,除了用双面建立一个立方体之外,我可以简单地“重绘在我之前的物体的顶部”。如果我想旋转对象,我想我可以假设OpenGL将不会覆盖纹理A,因为它不会通过面部剔除测试。这需要一个额外的矩阵乘法来在其自己的轴上镜像mi对象。但是,如果我只是改变剔除属性并尝试绘制它呢?它不是具有同样的效果,即从正面看不到文本,而是从背后传递文本?

这2个选项哪个更好?

(PD:我在iPhone上这样做这样的表现每一个位是较旧的设备很有关系)

谢谢。

回答

0

我不确定我是否正确理解了你,但听起来你正在试图在这里画一个广告牌?在这种情况下,你应该禁用背面剔除,并在你的片段着色器检查gl_FrontFacing。根据这一点,您可以翻转纹理坐标并更改纹理(只需绑定两个纹理并将它们发送到着色器)。这样你只有一次绘制调用,不必做任何奇怪的技巧或改变OpenGL状态。

+0

根据您的参考页面,它似乎不适用于opengl es 2.0。 – Pochi 2013-04-25 01:20:49

+0

@LuisOscar它为我标记了'Y'?请记住,这是GLSL ES联机帮助页,而不是GL ES联机帮助页!另外,我不是100%肯定的,但很确定我已经在ES 2项目中使用过它。 – JustSid 2013-04-25 01:49:06

+0

这个工作,非常感谢你。我只关心性能,不会在每个片段着色器中检查它,而不是在每次绘制调用之前更改一次状态,而不是更改GPU密度?或者不是每个顶点应用1个乘法矩阵? – Pochi 2013-04-25 03:49:59