显示没有黑色部分的图像

时间:2014-02-17 18:32:18

标签: opengl blending

我正在尝试使用opengl显示位图,但我不希望显示图像的黑色部分。我可以在DirectX中执行此操作,但不能在opengl中执行此操作。换句话说 - 我有黑色背景的植物图像,我想要绘制植物,使它们看起来很逼真(没有黑色边框)。

2 个答案:

答案 0 :(得分:2)

您可以使用alpha测试执行此操作:

  1. 在将图片上传到纹理之前添加Alpha通道,在黑色像素上0.0,在其他任何地方1.0
  2. 使用glEnable( GL_ALPHA_TEST )
  3. 启用Alpha测试
  4. glAlphaFunc( GL_LESS, 0.1f )
  5. 像往常一样渲染纹理四边形。由于alpha测试,OpenGL将跳过零alpha纹理。

答案 1 :(得分:1)

有几种方法可以做到这一点。

一种方法是使用Photoshop或GIMP等图像编辑程序为图像添加Alpha通道,然后将图像的黑色部分设置为最大alpha值。这样做的好处是它允许您决定图像的哪些部分是透明的,因为完全编程的方法有时会隐藏您想要看到的内容。

另一种方法是循环遍历位图中的每个像素,并根据某个定义的阈值设置alpha(即如果您想要真正的黑色,请检查每个颜色通道是否为255)。这样做的缺点是它偶尔会导致你的一些线条消失。

此外,您需要确保实际启用了Alpha通道并进行测试,如上面的答案中所述。请务必仔细检查您的通话顺序,因为当您尝试使用透明度时,这可能会导致很多问题。

由于你没有发布代码本身,这和我的建议差不多,但希望它足以让你至少能够找到解决方案。

相关问题