【发布时间】:2012-02-22 01:12:52
【问题描述】:
我在 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
有什么想法吗?
【问题讨论】:
-
如果您使用离线工具而不是您在 Google Code 上找到的某个库来生成压缩数据,会发生什么?
-
您确定您的 alpha 值始终为 255 吗?我每天都使用 squish,它确实可以保留 alpha。您可以发布用于创建正确图像的“参考”代码吗?
标签: c++ opengl image-compression