zoukankan      html  css  js  c++  java
  • 第一个OpenGL程序

    刚开始学习OpenGL,感觉这个挺有趣的(在绘制三维模型时,空间想象能力要求比较高,不然很头疼的)。

    新东西,新心情。。。来一发红色三角形。

    我就是要通过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

  • 相关阅读:
    《C语言课程设计与游戏开发实践课程》67章总结
    祖玛(Zuma)
    .net 实现微信公众平台的主动推送信息
    关于ASP与C#的感悟
    不同方面高手的地址。
    ASP中关于全局页面的作用 asax文件
    学习C#,开始了我的第一个进程。
    江苏立方网络科技有限公司招聘PHP工程师
    网上看到的ArcEngine控制地图显示范围的好方法(记下)
    3DS文件结构
  • 原文地址:https://www.cnblogs.com/eyeandroid/p/4550787.html
Copyright © 2011-2022 走看看