第一个OpenGL程序
2015-06-04 07:43
281 查看
刚开始学习OpenGL,感觉这个挺有趣的(在绘制三维模型时,空间想象能力要求比较高,不然很头疼的)。
新东西,新心情。。。来一发红色三角形。
我就是要通过OpenGL来绘制一个红色的三角形。现在我们来看一下代码:
关于投影矩阵,深度缓存这些东西,下次更加熟悉之后再写一下。。。
OpenGL源码:http://www.eyesourcecode.com/forum-OpenGL-1.html
新东西,新心情。。。来一发红色三角形。
我就是要通过OpenGL来绘制一个红色的三角形。现在我们来看一下代码:
#include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存 glLoadIdentity(); // 重置当前的模型观察矩阵 glTranslatef(0.0f, 0.0f, -5.0f); // 移入屏幕5个单位 glColor3f(1.0f, 0.0f, 0.0f); // 颜色设置为红色 glBegin(GL_TRIANGLES); // 开始绘制三角形 glVertex3f(0.0f, 1.0f, 0.0f); // 上顶点 glVertex3f(-1.0f, -1.0f, 0.0f); // 左下顶点 glVertex3f(1.0f, -1.0f, 0.0f); // 右下顶点 glEnd(); // 结束绘制 glFlush(); // 强制刷新缓冲 } void initGL() { glViewport(0, 0, 300, 300); // 重置当前的视口 glMatrixMode(GL_PROJECTION); // 选择投影矩阵 glLoadIdentity(); // 重置投影矩阵 gluPerspective(45.0f, (GLfloat)300 / (GLfloat)300, 0.1f, 100.0f); // 设置视口的大小 glMatrixMode(GL_MODELVIEW); // 选择模型观察矩阵 glLoadIdentity(); // 重置模型观察矩阵 glShadeModel(GL_SMOOTH); // 平滑投影 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 黑色背景 glClearDepth(1.0f); // 设置深度缓存 glEnable(GL_DEPTH_TEST); // 启用深度测试 glDepthFunc(GL_LEQUAL); // 深度测试类型 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 透视修正 } int main(int argc, char *argv[]) { glutInit(&argc, argv); // 初始化GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式(这里是单缓存和RGB颜色模式的窗口) glutInitWindowSize(300, 300); // 设置窗口大小 glutInitWindowPosition(300, 300); // 设置窗口初始位置 glutCreateWindow("第一个OpenGL程序"); // 创建一个窗口 initGL(); // OpenGL的设置 glutDisplayFunc(display); // 注册一个绘图函数 glutMainLoop(); // 进入GLUT事件处理循环 return 0; }
关于投影矩阵,深度缓存这些东西,下次更加熟悉之后再写一下。。。
OpenGL源码:http://www.eyesourcecode.com/forum-OpenGL-1.html
相关文章推荐
- Linux-HA3.0版安装说明
- DevOps - CI
- 在Centos 5.x或6.x上安装RHEL EPEL Repo
- bash shell 常用特殊字符
- 搭建自己的精美网站
- bash 6-10
- 用OpenGL绘制旋转的机器人手臂
- EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考
- 网站
- 就这样,在Linux的路上越走越远
- vmware里面的linux怎么和windows相互传文件
- linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程 .
- .bash_profile和.bashrc的区别(如何设置生效)
- Nginx Upstream timed out 的解决办法
- Nginx配置文件详细说明
- Linux文件句柄限制分析
- 离散型生产过程ZigBee监控系统设计
- Linux 性能监测:介绍
- Hadoop MapReduce Shuffle and Sort
- Hadoop HDFS 数据一致性