gpt4 book ai didi

objective-c - OpenglES - 透明纹理阻挡后面的物体

转载 作者:太空狗 更新时间:2023-10-30 03:43:34 24 4
gpt4 key购买 nike

我有一些具有透明纹理的四边形和这些四边形后面的一些对象。但是,这些似乎没有显示。我知道这是关于 GL_BLEND 的问题,但我无法设法显示背后的对象。

我试过:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glEnable(GL_BLEND);

但还是不行。我基本上拥有的是:

// I paint the object
draw_ac3d_file([actualObject getCurrentObject3d]);

// I paint the quad
paintQuadWithAlphaTexture();

最佳答案

有两种常见情况会造成这种情况,很难判断您的程序正在执行哪一种情况,如果有的话。

绘制顺序

首先,确保您以正确的顺序绘制对象。您必须从从后到前绘制,否则模型将无法正确混合。

http://www.opengl.org/wiki/Transparency_Sorting

注意 正如 Arne Bergene Fossaa 所指出的,从性能的角度来看,从前到后是渲染不透明对象的正确方法。正因为如此,大多数渲染器首先从前到后绘制所有没有透明度的模型,然后他们返回并从后到前渲染所有具有透明度的模型。这在大多数 3D 图形文本中都有介绍。

从后到前

enter image description here

从前到后

enter image description here

图片由 RMIT 大学的 Geoff Leach 提供

照明

第二个最常见的问题是照明使用不当。通常在这种情况下,如果您使用的是固定功能管道,人们会建议您简单地调用 glDisable(GL_LIGHTING);

现在这应该工作(如果它是根本原因)但是如果你想要照明怎么办?然后,您要么必须使用自定义着色器,要么为模型设置适当的 Material 设置。

可以在 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=285889 找到关于使用 Material 属性的讨论。

关于objective-c - OpenglES - 透明纹理阻挡后面的物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com