- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到一个问题,我想使用 DevIL 作为字节数组加载的 .png
图像没有 alpha channel 。
全黑图像也显示为 alpha channel 值为 0。
这是我的图片加载函数:
DevILCall(ilGenImages(1, &m_ImageID));
DevILCall(ilBindImage(m_ImageID));
ASSERT("Loading image: " + path);
DevILCall(ilLoadImage(path.c_str()));
GraphicComponents::Image image(
ilGetData(),
ilGetInteger(IL_IMAGE_HEIGHT),
ilGetInteger(IL_IMAGE_WIDTH),
ilGetInteger(IL_IMAGE_BITS_PER_PIXEL)
);
return image;
我使用的Image
对象如下:
struct Image
{
ILubyte * m_Image;
const unsigned int m_Height;
const unsigned int m_Width;
const unsigned int m_BPP;
Image(ILubyte imageData[ ], unsigned int height, unsigned int width, unsigned int bpp);
~Image();
};
这就是我现在打印图像数据的方式:
for(unsigned int i = 0; i < image->m_Height*image->m_Width*4; i+=4)
{
LOG("Red:");
LOG((int) image->m_Image[i]);
LOG("Green:");
LOG((int) image->m_Image[i+1]);
LOG("Blue:");
LOG((int) image->m_Image[i+2]);
LOG("Alpha:");
LOG((int) image->m_Image[i+3]);
}
我还尝试使用 ilTexImage()
将加载的图像格式化为 RGBA
格式,但这似乎也不起作用。当我将循环变量的最大值更改为图像中像素数的 4 倍时,打印循环开始读取垃圾值。
该图像也被确认具有 alpha channel 。这里可能出了什么问题?
编辑:ilGetInteger(IL_IMAGE_BPP)
返回 3,目前应该表示 RGB。当我使用 ilTexImage()
强制使用 4 个 channel 时,ilGetInteger(IL_IMAGE_BPP)
返回 4,但我仍然看到垃圾值在标准输出中弹出
最佳答案
加载图像后通过简单的 ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE)
调用解决了这个问题。
我想 DevIL 默认以无符号字节值以 RGB
模式加载图像,否则,您需要使用 ilConvertImage()
转换加载的图像。
关于c++ - DevIL/OpenIL 未加载 alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217346/
我遇到一个问题,我想使用 DevIL 作为字节数组加载的 .png 图像没有 alpha channel 。 全黑图像也显示为 alpha channel 值为 0。 这是我的图片加载函数: DevI
我正在尝试编译使用 OpenGL、SDL 和 IL aka DevIL aka OpenIL 库的示例源代码。 OpenGL 和 SDL 可用作 native 框架,但 DevIL 不是。所以这就是我
我是一名优秀的程序员,十分优秀!