具有DXT5压缩纹理的Alpha通道

时间:2012-01-30 07:15:16

标签: c++ opengl image-compression

我在OS X上编写了一个使用OpenGL的测试程序,它加载了一个PNG,使用libsquish(http://code.google.com/p/libsquish/)将其压缩到DXT5,并对一个平面进行纹理处理。

当我上传包含Alpha通道的图片但没有像素具有完全不透明的alpha值时,它会正确显示:http://i.imgur.com/nElZ8.png

给定相同的图像,但黑色部分被透明度替换,这是我得到的输出:http://i.imgur.com/8Ld3y.png

代码并不漂亮,它是一个概念证据:

  1. C ++来源:http://pastebin.com/m0RqpgUS
  2. 顶点着色器:http://pastebin.com/QyaWCaTk
  3. 片段着色器:http://pastebin.com/KEuFJ83C
  4. 测试图像:http://dl.dropbox.com/u/4597377/images.zip
  5. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来我忘了这个:

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