当纹理重叠时如何使背景透明?

发布于 2024-10-17 13:52:37 字数 80 浏览 1 评论 0原文

我有一个具有黑色背景的纹理,我想将其设置为透明。问题是,当我使用该纹理在另一个对象前面绘制该纹理时,黑色背景仍然显示。如何使纹理透明,即使它重叠?

I have a texture that has a black background which I want to make transparent. The problem is that when I draw this texture in front of another object using the texture, the black background still shows. How do I make my texture transparent, even when it overlaps?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生百味 2024-10-24 13:52:37

我在这里假设 3 件事

  1. 您成功加载了带有 alpha 通道的图像(如 .png 或 .tga)
  2. 您已启用深度测试
  3. 您尚未更改混合模式,但启用了混合

当 OpenGL 为绘制四边形/三角形时,它也会绘制到深度缓冲区,无论该像素是否透明(或部分透明)。
我的猜测是,您首先绘制这个透明形状,然后最后绘制其后面的对象。 OpenGL 不会绘制后面的对象,深度缓冲区已经表明您已经在其前面绘制了某些内容,因此您实际上是透过第一个和第二个对象看到“天空”。

所以如果透明物体总是在前面,那么最后绘制它。否则它会变得相当复杂(谷歌“深度排序”),

当我回家时我会尝试添加更多细节。

I'm assuming 3 things here

  1. You're succesfully loading an image with an alpha channel (like a .png or .tga)
  2. You've got depth testing enabled
  3. You haven't changed the blending mode, but have enabled blending

When OpenGL is drawing your Quad/Triangle, it is also drawing to the depth buffer, regardless of whether or not that pixel is transparent (or partially transparent).
My guess is that you're drawing this transparent shape first, and then the object behind it last. OpenGL wont draw the back object where the depth buffer already says you've drawn something in front of it, so you're really seeing through the first and second object, out into the 'sky'.

so if the transparent object is always in front, draw it last. Otherwise it gets pretty complicated (Google "depth sorting")

I'll try an add more detail to this when I get home.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文