- //===============================================================
- // Name : GLUT-STATIC.cpp
- // Author : CodeVampire
- // Version :
- // Copyright : Your copyright notice
- // Description : Hello World in C++, Ansi-style
- //===============================================================
- /*
- * 包含必要的库文件
- */
- #include <iostream>
- #include <GL/glut.h>
- #include <GL/glu.h>
- #include <cstdlib>
- /*
- * 命名空间
- */
- using namespace std;
- /*
- * 界面渲染函数
- * 原型 void renderScene(void);
- */
- void renderScene() {
- /*
- * 设置背景颜色
- */
- glClearColor(0.8,0.6,0.7,0.0);
- /*
- * 清空颜色缓存 设定背景为黑色
- * 清空深度缓存
- */
- glClear(GL_COLOR_BUFFER_BIT);
- /*
- * 绘图开始指定绘制三角形
- */
- glBegin(GL_TRIANGLES);
- /*
- * 指定点对 三维点对
- */
- glColor3f(1.0,0.0,0.0);
- glVertex3f(-0.5,-0.5,0.0);
- glColor3f(0.0,1.0,0.0);
- glVertex3f(0.5,0.0,0.0);
- glColor3f(0.0,0.0,1.0);
- glVertex3f(0.0,0.5,0.0);
- /*
- * 绘图结束
- */
- glEnd();
- /*
- * 刷新
- */
- glFlush();
- }
- /*
- * 窗口重绘函数
- * 原型 void changeSize(int w, int h)
- */
- void changeSize(int width, int height)
- {
- /*
- * 防止高度为零
- */
- if(height == 0)
- height = 1;
- /*
- * 计算比率 宽 比 高
- */
- float ratio = 1.0*width/height;
- /*
- * glMatrixMode() 指定当前矩阵模式
- * 参数有:
- * GL_MODELVIEW 对模型视景矩阵堆栈应用随后的矩阵操作
- * GL_PROJECTION 对投影矩阵应用随后的矩阵操作
- * GL_TEXTURE 对纹理矩阵堆栈应用随后的矩阵操作
- * 与 glLoadIdentity() 搭配使用
- */
- glMatrixMode(GL_PROJECTION);
- /*
- * 重置当前指定的矩阵为单位矩阵
- */
- glLoadIdentity();
- /*
- * 设定视口矩形
- * 原型 glViewport(int x, int y, int width, int height);
- * x,y 视口矩形的左下角坐标 单位为像素 缺省值为0
- * width,height 视口宽高
- */
- glViewport(0,0,width,height);
- /*
- * 设置透视投影矩阵
- * gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
- * fovy 指定视景体的视野的角度 以度数为单位 y轴的上下方向
- * aspect 指定视景体的宽高比 x平面上
- * zNear 指定观察者到视景体的最近的裁剪面的距离 >0
- * zFar 与上相反 >0
- */
- gluPerspective(45,ratio,1,1000);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- /*
- * 定义视点矩阵
- * 原型 gluLookAt(
- * GLdouble eyex,GLdouble eyey,GLdouble eyez
- * //定义视点位置
- * GLdouble centerx,GLdouble centery,GLdouble centerz
- * //参考点位置
- * GLdouble upx,GLdouble upy,GLdouble upz
- * //向上向量方向 0.0,1.0,0.0
- * )
- */
- gluLookAt(0.0,0.0,3.0,0.0,0.0,-1.0,0.0f,1.0f,0.0f);
- }
- /*
- * 声明主函数
- */
- int main(int argc,char* argv[]) {
- /*
- * 初始化GLUT 使用main参数 argc argv
- */
- glutInit(&argc,argv);
- /*
- * 设置GLUT显示模式 位设置模式
- * GLUT_RGBA / GLUT_RGB RGB颜色模式
- * GLUT_INDEX 颜色索引模式
- * GLUT_SINGLE 单缓冲模式
- * GLUT_DOUBLE 双缓冲
- * GLUT_ACCUM Accumulation Buffer
- * GLUT_STENCIL Stencil Buffer
- * GLUT_DEPTH 深度缓冲
- */
- glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGB);
- /*
- * GLUT窗口显示位置 默认参数为 -1
- */
- glutInitWindowPosition(-1,-1);
- /*
- * GLUT窗口尺寸 参数顺序为 宽 高
- */
- glutInitWindowSize(640,480);
- /*
- * GLUT创建窗口 参数指定窗口标题
- */
- glutCreateWindow("GLUT-Application");
- /*
- * GLUT绘图函数注册
- */
- glutDisplayFunc(renderScene);
- /*
- * GLUT窗口重绘函数注册
- */
- glutReshapeFunc(changeSize);
- /*
- * GLUT主函数循环
- */
- glutMainLoop();
- return 0;
- }
Opengl GLUT工具开发 学习笔记 001
最新推荐文章于 2024-03-19 21:06:50 发布