c – OpenGL纹理格式的颜色错误

c – OpenGL纹理格式的颜色错误,第1张

概述我正在尝试使用Free Image加载图像,然后生成OpenGL纹理.它加载图像并生成纹理,但颜色存在问题. 这是原始图片: 这是结果: 纹理加载代码: void TextureManager::LoadTexture(std::string id, std::string filePath){Texture tex;tex.TextureId = 0;FIBITMAP* image = 我正在尝试使用Free Image加载图像,然后生成OpenGL纹理.它加载图像并生成纹理,但颜色存在问题.

这是原始图片:

这是结果:

纹理加载代码:

voID TextureManager::LoadTexture(std::string ID,std::string filePath){Texture tex;tex.TextureID = 0;FIBITMAP* image = FreeImage_Load(FreeImage_GetfileType(filePath.c_str(),0),filePath.c_str());if (FreeImage_GetBPP(image) != 32) {    image = FreeImage_ConvertTo32Bits(image);}FreeImage_FlipVertical(image);tex.WIDth = FreeImage_GetWIDth(image);tex.Height = FreeImage_GetHeight(image);glGenTextures(1,&tex.TextureID);glBindTexture(GL_TEXTURE_2D,tex.TextureID);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_TEXTURE_MAG_FILTER,GL_liNEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_liNEAR);glTexImage2D(GL_TEXTURE_2D,GL_RGBA,tex.WIDth,tex.Height,GL_UNSIGNED_BYTE,(voID*)FreeImage_GetBits(image));AddTexturetoMap(ID,tex);FreeImage_Unload(image);}

这是绘制它的代码:

glEnable(GL_TEXTURE_2D);glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODulATE);glBindTexture(GL_TEXTURE_2D,TextureManager.TextureMap[textureSelector].TextureID);glBegin(GL_TRIANGLES);glTexCoord2d(0,0);glVertex3f(-0.75,0.75,0);//top leftglTexCoord2d(1,0);glVertex3f(0.75,0);//top rightglTexCoord2d(0,1);glVertex3f(-0.75,-0.75,0);//bottom leftglTexCoord2d(1,0);//top rightglTexCoord2d(1,1);glVertex3f(0.75,0);//bottom rightglTexCoord2d(0,0);//bottom leftglEnd();glFinish();

我很确定这是glTexImage2D中内部格式的问题,但我不确定在这种情况下我会使用哪种格式.我的问题是:它是格式,如果是,我应该使用什么;还是有另一个问题导致了这个问题?

解决方法 尝试使用它

不同之处在于,许多图像格式使用反向字节顺序,您应该使用GL_BGR_EXT或GL_BGRA_EXT图像格式而不是GL_RGB或GL_RGBA

voID TextureManager::LoadTexture(std::string ID,GL_BGRA_EXT,tex);FreeImage_Unload(image);}
总结

以上是内存溢出为你收集整理的c – OpenGL纹理格式的颜色错误全部内容,希望文章能够帮你解决c – OpenGL纹理格式的颜色错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1227858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存