opengl透视投影代码
时间: 2023-05-28 11:05:29 浏览: 147
opengl演示代码
以下是一个简单的OpenGL透视投影示例代码:
```c
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 1.0, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-2.0, -2.0, 0.0);
glColor3f(0.0, 1.0, 0.0);
glVertex3f(2.0, -2.0, 0.0);
glColor3f(0.0, 0.0, 1.0);
glVertex3f(0.0, 2.0, 0.0);
glEnd();
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250, 250);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
```
这个示例程序使用了GLUT库来创建一个窗口,并在窗口中绘制了一个三角形。在绘制之前,它先通过glMatrixMode函数将当前矩阵模式设置为GL_PROJECTION,然后将透视投影矩阵加载到当前矩阵中。透视投影矩阵由gluPerspective函数生成,它需要四个参数:视角、宽高比、近平面距离和远平面距离。在本例中,视角为60度,宽高比为1:1,近平面距离为1,远平面距离为20。接着,程序将矩阵模式切换回GL_MODELVIEW,并通过gluLookAt函数设置了相机的位置和方向。最后,程序绘制了一个三角形,使用了三种不同的颜色。在绘制完成后,调用glFlush函数将绘制结果刷新到屏幕上。
阅读全文