【发布时间】:2015-05-09 12:39:26
【问题描述】:
我的目标是使纹理的像素值 100% 透明,如果它与设置的 RGB 颜色完全匹配。我的程序使用 24 位 .bmp 图像,我知道它不包含第四个通道(除了填充),所以我一直在尝试想出一个好方法来促进添加 alpha 通道以执行基本透明度。
我了解如何计算实际 alpha 值并正确设置混合函数,但是当我尝试将第四个值添加到 GLubyte RGB 三元组时遇到了障碍,让我相信该格式根本不支持α。所以我有一个想法,将纹理数据从字节手动转换为 32 位无符号整数,但我在执行时遇到了问题。在我看来(从看书)内部像素格式 GL_UNSIGNED_INT 每个像素需要四个 32 位整数,但是当我通过将 0.0-1.0 字节值钳制到最大范围来转换字节时,我的程序不会启动无符号整数。
我不想给我答案,但我真的很感激朝着正确的方向前进。我是否在正确的轨道上转换为每像素 4 个整数,或者有没有办法让 alpha 与我忽略的字节数据一起工作?我考虑过使用 GL_UNSIGNED_INT_8888 格式,但我想尽可能避免移位。
【问题讨论】:
-
您在尝试添加
GLubyte格式的alpha 时遇到了什么问题?真的不应该有什么。您只需每个 texel 有 4 个字节,之前每个 texel 有 3 个字节,并将格式指定为 RGBA 而不是 RGB。