读取BMP BGR值,传递到glTexImage2D
reading BMP BGR values, passing to glTexImage2D
我已经编写了一个例程,将BMP文件中的所有像素值读取到一个数组中,我想将该数组提供给openGL的glTexImage2D,以将其转换为纹理。通过这样做,我意识到BMP文件中像素的实际格式是BGR,而不是RGB,所以我的数组包含蓝色、绿色和红色。因此,与原始位图相比,我的最终纹理的蓝色和红色通道被交换了。
我这样称呼它:
glTexImage2D(GL_TEXTURE_2D, 0, 3, imgdata->width, imgdata->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata->pixdata);
对于这种情况/我提出的错误论点,有什么解决办法吗?我现在能找到的唯一解决方案是使用循环手动交换数组中的RB值。
为什么不将glTexImage2D的格式更改为GL_BGR。
我设置了GR_BGR,它被标记为未声明的标识符
那么你没有使用一个合适的库来获取OpenGL。OpenGL系统提供的标头可能包含也可能不包含最新的函数和枚举器。因此,您需要使用其中一个库来获取OpenGL。您应该使用这些而不是GL/gl.h
的。
一旦正确访问OpenGL,剩下的就很简单了。使用GL_RGB
作为像素传输格式。
相关文章:
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- 从 bmp 文件数据创建 MFC CBitmap
- 将 bmp 文件加载到 TSpeedButton 中
- glTexImage2D 访问违规
- 在C++中的SDL2窗口上显示.bmp时出现问题
- 将位图 (bmp) 转换为具有透明度的 png (Windows c++)
- 将 BMP 图像转换为灰度
- GUID variable for JPEG,BMP,PNG
- glTexImage2D 不起作用,但将 FragColor 设置为 vec4(1.0, 0, 0, 1.0) 会给我红色图像
- 在glTexImage2D中,当我选择与在着色器中采样不同的内部格式时,情况如何?
- 在 BMP 文件中查找隐藏的消息
- C++,我正在尝试创建一个有效的.bmp输出文件
- 将 24 位".bmp"图像转换为黑白/单色图像的可能算法是什么?
- 如何在包含数字的.bmp(二进制图像)中执行组件标记9 4 3 6
- BMP的完整屏幕截图.与块状和保存有关的问题
- 如何在C++的四叉树中存储 bmp 文件?
- 在控制台上显示 BMP 映像时堆损坏
- 将glteximage2d保存到文件系统中进行检查
- 如何读取从UChar缓冲区到CV :: MAT的1位BMP
- 读取BMP BGR值,传递到glTexImage2D