我在 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
代码并不漂亮,它是一个综合的概念证明:
- C++ 源代码:http: //pastebin.com/m0RqpgUS
- 顶点着色器:http: //pastebin.com/QyaWCaTk
- 片段着色器:http: //pastebin.com/KEuFJ83C
- 测试图片:http ://dl.dropbox.com/u/4597377/images.zip
有什么想法吗?