c – OpenGL纹理的奇怪事件

c – OpenGL纹理的奇怪事件,第1张

概述我相当肯定我的纹理加载没有问题,但是,我无法让它们渲染! 我初始化GL时启用GL_TEXTURE_2D.然后我用这个函数加载纹理: GLuint loadTexture(std::string filepath){ SDL_Surface *image; if ( image = SDL_LoadBMP( filepath.c_str() ) ) { GL 我相当肯定我的纹理加载没有问题,但是,我无法让它们渲染!

我初始化GL时启用GL_TEXTURE_2D.然后我用这个函数加载纹理:

gluint loadTexture(std::string filepath){    SDL_Surface *image;    if ( image = SDL_LoadBMP( filepath.c_str() ) )    {        gluint tex_ID;        glGenTextures( 1,&tex_ID );        glBindTexture( GL_TEXTURE_2D,tex_ID );        glTexImage2D(   GL_TEXTURE_2D,3,image->w,image->h,GL_RGB,GL_UNSIGNED_BYTE,image->pixels );        SDL_FreeSurface(image);        glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_liNEAR );        glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_liNEAR );        textures.emplace(getfilename(filepath),tex_ID);        glBindTexture(GL_TEXTURE_2D,0);        return tex_ID;    }    else    {        // std::cout << "[!!] Could not open " << filepath << "! \n";        return -1;    }}

加载纹理,然后将纹理名称放在地图中,文件名作为键.该映射是全局定义为std :: map< std :: string,gluint>纹理.我可以遍历地图并验证GL正确分配纹理名称.最后,我继续绘制我的四边形:

glBindTexture(GL_TEXTURE_2D,textures["MY_IMAGE.BMP"]);glBegin(GL_QUADS);glTexCoord2f(0.0,0.0);glVertex3d(0.0,0.0,iNode->verticIEs[1]);glTexCoord2f(1.0,0.0);glVertex3d(1.0,iNode->verticIEs[2]);glTexCoord2f(1.0,1.0);glVertex3d(1.0,1.0,iNode->verticIEs[3]);glTexCoord2f(0.0,1.0);glVertex3d(0.0,iNode->verticIEs[4]);glEnd();

一些值得注意的事情:

>在绘制之前已经定义了这些四边形的颜色.如果我
注释掉所有格式的颜色定义
glcolor3ub(r,g,b),四边形渲染为黑色.
>如果我调用gListexture(textures [“MY_IMAGE.BMP”]),则返回false.
>纹理名称仍然正确存储在地图中.
>我正在使用OpenGL 2.1.

纹理是否以某种方式在内部删除?我的渲染有问题吗?

如果需要,我愿意提供更多代码.

编辑:
我不知道我做了什么……
现在我的渲染看起来像这样:

解决方法 从 SDL_LoadBMP文档:

Note: When loading a 24-bit windows BMP file,pixel data points are loaded as blue,green,red,and NOT red,blue (as one might expect).

因此,提供给glTexImage2D的格式参数需要是GL_BGR.

总结

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

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

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

原文地址: http://outofmemory.cn/langs/1226878.html

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

发表评论

登录后才能评论

评论列表(0条)

保存