我正在尝试使用opengl显示位图,但我不希望显示图像的黑色部分。我可以在DirectX中执行此操作,但不能在opengl中执行此操作。换句话说 - 我有黑色背景的植物图像,我想要绘制植物,使它们看起来很逼真(没有黑色边框)。
答案 0 :(得分:2)
您可以使用alpha测试执行此操作:
0.0
,在其他任何地方1.0
。glEnable( GL_ALPHA_TEST )
glAlphaFunc( GL_LESS, 0.1f )
答案 1 :(得分:1)
有几种方法可以做到这一点。
一种方法是使用Photoshop或GIMP等图像编辑程序为图像添加Alpha通道,然后将图像的黑色部分设置为最大alpha值。这样做的好处是它允许您决定图像的哪些部分是透明的,因为完全编程的方法有时会隐藏您想要看到的内容。
另一种方法是循环遍历位图中的每个像素,并根据某个定义的阈值设置alpha(即如果您想要真正的黑色,请检查每个颜色通道是否为255)。这样做的缺点是它偶尔会导致你的一些线条消失。
此外,您需要确保实际启用了Alpha通道并进行测试,如上面的答案中所述。请务必仔细检查您的通话顺序,因为当您尝试使用透明度时,这可能会导致很多问题。
由于你没有发布代码本身,这和我的建议差不多,但希望它足以让你至少能够找到解决方案。