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); |