用OpenGL写一个纹理映射代码
时间: 2024-05-10 20:20:56 浏览: 176
下面是一个简单的用OpenGL实现纹理映射的代码:
```c++
#include <GL/glut.h>
GLuint texture; // 纹理对象
void init() {
// 加载纹理图片
texture = SOIL_load_OGL_texture(
"texture.jpg",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
// 设置纹理过滤方式
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// 启用纹理功能
glEnable(GL_TEXTURE_2D);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
// 绘制一个矩形,并映射纹理
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f, 1.0f);
glEnd();
glutSwapBuffers();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(800, 600);
glutCreateWindow("Texture Mapping");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
这段代码加载了一张名为"texture.jpg"的纹理图片,并在窗口中绘制了一个矩形,将纹理映射到矩形上。在初始化函数中,首先使用SOIL库加载纹理图片,并设置了纹理过滤方式。在绘制函数中,使用glTexCoord2f函数映射纹理坐标,glVertex2f函数绘制矩形顶点,最后调用glEnd函数结束绘制。
阅读全文