opengl绘制一个矩形.添加单个木材纹理
时间: 2023-10-27 12:05:56 浏览: 106
好的,下面是使用 OpenGL 绘制一个矩形并添加单个木材纹理的步骤:
1. 首先,需要包含 OpenGL 的头文件和库文件。
```
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
```
2. 接着,需要定义一个纹理 ID 和一张纹理图片。
```
GLuint textureID;
const char* textureFile = "wood.jpg";
```
3. 在 `main()` 函数中加载纹理图片并生成纹理 ID。
```
int main(int argc, char** argv) {
// ...
// 读取纹理图片
int width, height;
unsigned char* image = SOIL_load_image(textureFile, &width, &height, 0, SOIL_LOAD_RGB);
if (!image) {
printf("Failed to load texture %s\n", textureFile);
return -1;
}
// 生成纹理 ID
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
SOIL_free_image_data(image);
// ...
}
```
4. 编写绘制函数,在其中绘制矩形并指定纹理坐标。
```
void drawRect() {
// 绑定纹理
glBindTexture(GL_TEXTURE_2D, textureID);
// 绘制矩形
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0);
glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0);
glEnd();
}
```
5. 在 `display()` 函数中调用绘制函数。
```
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawRect();
glFlush();
}
```
6. 最后,在 `main()` 函数中启动 OpenGL 窗口并进入主循环。
```
int main(int argc, char** argv) {
// ...
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
这样就完成了使用 OpenGL 绘制一个矩形并添加单个木材纹理的过程。
阅读全文