用c++的opengl库画出三视图
时间: 2023-12-20 12:05:02 浏览: 190
C++实现利用OpenGL实现三维绘图
4星 · 用户满意度95%
首先,我们需要知道什么是三视图。三视图是指主视图、左视图和顶视图。它们分别以不同的方向来描述一个物体的三个面。主视图显示物体的前面、左视图显示物体的右面、顶视图显示物体的上面。
下面是一个使用OpenGL库画出三视图的示例代码:
```c++
#include <GL/glut.h>
void init(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-50.0, 50.0, -50.0, 50.0);
}
void main_display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
// 绘制主视图
glViewport(0, 0, 300, 300);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex2i(-20, -20);
glVertex2i(20, -20);
glVertex2i(20, 20);
glVertex2i(-20, 20);
glEnd();
// 绘制左视图
glViewport(300, 0, 300, 300);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90.0, 0.0, 1.0, 0.0);
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex2i(-20, -20);
glVertex2i(20, -20);
glVertex2i(20, 20);
glVertex2i(-20, 20);
glEnd();
// 绘制顶视图
glViewport(0, 300, 300, 300);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90.0, 1.0, 0.0, 0.0);
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_LINE_LOOP);
glVertex2i(-20, -20);
glVertex2i(20, -20);
glVertex2i(20, 20);
glVertex2i(-20, 20);
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(100, 100);
glutCreateWindow("Three Views");
init();
glutDisplayFunc(main_display);
glutMainLoop();
return 0;
}
```
在这个程序中,我们首先初始化OpenGL环境,然后在`main_display`函数中绘制三个视图。我们使用`glViewport`函数来定义每个视图的位置和大小。然后使用`glMatrixMode`和`glLoadIdentity`函数来设置当前矩阵模式和当前矩阵。我们使用`glRotatef`函数来旋转每个视图。最后,我们使用`glBegin`和`glEnd`函数来绘制一个正方形。在每个视图中,我们使用不同的颜色来区分它们。
注意,这只是一个简单的示例程序,实际上三视图通常需要绘制更复杂的物体,需要使用更多的OpenGL函数和技巧来实现。
阅读全文