下面是一个使用OpenGL设置顶点坐标并旋转纹理90度的简单示例:
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
// 设置顶点坐标
GLfloat vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.5f, 0.5f, 0.0f,
-0.5f, 0.5f, 0.0f
};
// 设置纹理坐标
GLfloat texCoords[] = {
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 1.0f,
0.0f, 1.1f // 这里将纹理坐标Y轴方向进行了旋转90度
};
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 3 * sizeof(GLfloat), vertices);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(GLfloat) * 2, texCoords);
glDrawArrays(GL_QUADS, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glutSwapBuffers();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow("OpenGL Example");
// 初始化 OpenGL 环境
// ... 这里省略设置 OpenGL 视口、投影矩阵等的代码 ...
// 注册显示回调函数
glutDisplayFunc(display);
// 开始主循环
glutMainLoop();
return 0;
}
以上示例使用了GLUT库来管理窗口和OpenGL上下文,可以通过链接和编译时包含 -lglut -lGL -lGLU
参数。请注意,这只是一个简单的示例,并未完整展示 OpenGL 的所有细节,仅供参考。
内容由零声教学AI助手提供,问题来源于学员提问