C++ OpenGL纹理格式

C++ OpenGL纹理格式,c++,opengl,textures,C++,Opengl,Textures,为了清楚起见,到目前为止,纹理与 glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,(GLsizei)img.width(),(GLsizei)img.height(),0,GL_BGRA,GL_UNSIGNED_BYTE,img.bits()); 现在我想应用一个9KB的png图像和UV映射。 这就是我的混合器文件的外观,我将此混合器文件导出到.obj以进行文件读取 出口优惠: 当我执行上面的代码时,我得到了一个以前从未出现过的分段错误!文件格式不会有问题,因为我已经

为了清楚起见,到目前为止,纹理与

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,(GLsizei)img.width(),(GLsizei)img.height(),0,GL_BGRA,GL_UNSIGNED_BYTE,img.bits());
现在我想应用一个9KB的png图像和UV映射。 这就是我的混合器文件的外观,我将此混合器文件导出到.obj以进行文件读取

出口优惠:

当我执行上面的代码时,我得到了一个以前从未出现过的分段错误!文件格式不会有问题,因为我已经尝试加载另一个png纹理并成功。
问题一定是glTexImage的格式或内部格式,因为当我将内部格式更改为GL_BGRA时,它运行但不显示纹理。

是否尝试使用GL_RGBA而不是GL_BGRA?问题一定是glTexImage的格式或内部格式,因为当我将内部格式更改为GL_BGRA时,它运行但不显示纹理。由于GL_BGRA不是纹理的有效内部格式,并且整个命令将生成GL_INVALID_ENUM错误,因此不会产生进一步的影响,因此该结论不会出现。对我来说,这看起来像是你解码的图像数据根本不是RGBA/BGRA格式,你正在触发一个ouf边界读取调用。好的,我解决了它。显然,我的png图像有索引颜色,我需要将其转换为RBG。但感谢您的回复: