大佬教程收集整理的这篇文章主要介绍了c – 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 left glTexCoord2d(1,0); glVertex3f(0.75,0);//top right glTexCoord2d(0,1); glVertex3f(-0.75,-0.75,0);//bottom left glTexCoord2d(1,0);//top right glTexCoord2d(1,1); glVertex3f(0.75,0);//bottom right glTexCoord2d(0,0);//bottom left glEnd(); glFinish();
我很确定这是glTexImage2D中内部格式的问题,但我不确定在这种情况下我会使用哪种格式.我的问题是:它是格式,如果是,@R_532_10675@用什么;还是有另一个问题导致了这个问题?
以上是大佬教程为你收集整理的c – OpenGL纹理格式的颜色错误全部内容,希望文章能够帮你解决c – OpenGL纹理格式的颜色错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。