在opengl中实现物体的三视图代码
时间: 2023-12-20 21:04:58 浏览: 124
OPENGL.rar_mfc opengl 背景_opengl_opengl 背景_三维物体
以下是一个简单的OpenGL程序,可以实现物体的三视图:
```c++
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 正视图
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 1, 0, 0, 0, 0, 1, 0);
glColor3f(1, 0, 0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0);
glVertex3f(0.5, -0.5, 0);
glVertex3f(0, 0.5, 0);
glEnd();
// 侧视图
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 1, 0, 0, 0, 0, 1, 0);
glRotatef(90, 0, 1, 0);
glColor3f(0, 1, 0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0);
glVertex3f(0.5, -0.5, 0);
glVertex3f(0, 0.5, 0);
glEnd();
// 俯视图
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 1, 0, 0, 0, 0, 0, 0, 1);
glColor3f(0, 0, 1);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0);
glVertex3f(0.5, -0.5, 0);
glVertex3f(0, 0.5, 0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("Three Views");
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
在这个程序中,我们使用了三个不同的视图矩阵来实现物体的三视图。在每个视图中,我们都绘制了一个简单的三角形来代表物体。为了使三个视图不重叠,我们在每个视图中都使用了不同的颜色。最后,我们使用了OpenGL的双缓冲机制来避免闪烁。
阅读全文