【原】OpenGL贴图及贴图颜色偏蓝的解决

glEnable(GL_TEXTURE_2D); // 首先打开texture
glGenTextures(1, &me->texture_id);
glBindTexture(GL_TEXTURE_2D, me->texture_id);
glTexImage2D(GL_TEXTURE_2D, 0, 3, bitmap_width, bitmap_height, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmap_data);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glDisable(GL_TEXTURE_2D);// 做完相关工作后关掉, 否则此处的设定会影响后边

这里要注意一下在进行贴图的绑定和设定时要用glEndable(GL_TEXTURE_2D)和glDisable(GL_TEXTURE_2D)包围起来, 这是因为opengl是一个状态机, 如果你做过贴图相关的工作后不关闭, 后边再画图, 使用的颜色都将是这个贴图的颜色(据观察应该是这个贴图最后一个像素的颜色)。 如果你的贴图贴上去发现偏蓝, 将GL_RGB改为GL_BGR

之后就要使用贴图了

glEnable(GL_TEXTURE_2D); // 首先打开texture
glBindTexture(GL_TEXTURE_2D, me->texture_id);// 如果你加载了多个贴图, 用这个语句选择贴图
glTexCoordPointer(2, GL_FLOAT, 0, text_coord);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisable(GL_TEXTURE_2D);
此条目发表在 3D 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>