0

在 OpenGL 中,哪一个会带来更好的性能。改变剔除的面或旋转我的对象?

场景如下:

我计算矩阵以输入我的着色器,这将在某个剔除位置(前)绘制纹理 A。当我从前面看到物体时,我可以看到它,但从后面我看不到,这是我想要的行为。现在我想在后面添加“一些东西”,比如说纹理 B,这样当从后面看到对象时,这个其他纹理将出现在与纹理 A 相同的位置和方向,但现在使用纹理 B。

我认为除了构建一个有 2 个面的立方体之外,我还可以简单地在我之前的对象上“重绘”。如果我要旋转对象,我想我可以假设 OpenGL 不会简单地覆盖纹理 A,因为它不会通过面部剔除测试。这需要一个额外的矩阵乘法来将 mi 对象镜像到它自己的轴上。但是,如果我只是更改剔除属性并尝试绘制它怎么办?从前面传递文本但从后面传递它不会产生相同的效果吗?

这两个选项哪个更好?

(PD:我在 iPhone 上这样做,所以每一点性能都与旧设备非常相关。)

谢谢你。

4

1 回答 1

0

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

于 2013-04-25T00:23:52.583 回答