OpenGL
夕阳-晨曦
这个作者很懒,什么都没留下…
展开
-
(VC)搭建OpenGL编程环境
1、下载glut工具包 opengl需要用到的库。下载glut: http://pan.baidu.com/s/1i4c8sHf 2、安装glut a)解压上面下载到的glut工具包后会得到5个文件,如下图: b)glut.lib和glut32.lib这两个静态函数库复制到安装vc目录下的lib文件夹下 (例如:E:\programe files\Microsoft Visu原创 2016-03-05 23:43:07 · 2446 阅读 · 1 评论 -
OpenGL编程(一)渲染一个指定颜色的背景窗口
上次已经搭好了OpenGL编程的环境。已经成功运行了第一个程序。可只是照搬书上的代码,并没弄懂其中的原理。这次通过一个小程序来解释使用GLUT库编写OpenGL程序的过程。程序的入口 与其他程序一样main()函数是程序的入口,由(window)操作系统调用,然后我们把需要实现的代码在main()函数里调用。设置初始显示模式 glutInitDisplayMode(GLUT_SINGLE |原创 2016-03-07 22:55:40 · 8043 阅读 · 1 评论 -
OpenGL编程(二)绘制矩形
上次只是创建了一个简单的窗口,把背景颜色修改为蓝色(默认是黑色),并没有向窗口添加任何图形。这次在上次代码的基础上往窗口中添加一个矩形,设置矩形的颜色,大小等。 1、添加矩形 在(参考上次代码)renderScene()函数里添加glRectf(-0.5f, -0.5f, 0.5f, 0.5f);就能在窗口上绘制一个矩形,默认的颜色是白色,如果需要修改颜色,在绘图前使用glColor3f函数来修原创 2016-03-08 20:18:57 · 24516 阅读 · 4 评论 -
OpenGL编程(三)让矩形动起来
上次实现了在窗口中添加一个了一个矩形。这次的任务是在上次代码的基础上,让那个矩形动起来。1、思路 要看到动态的效果,首先添加一个定时器,规定的时间刷新一次窗口;不断修改矩形的位置,使其在时间轴上达到动态的效果。2、注册定时器 glutTimerFunc(33, timerFunction, 1); 33表示33毫秒后调用,timerFunction为回调函数,1为区别值(用以区分不同的定时原创 2016-03-08 22:32:16 · 5149 阅读 · 3 评论 -
OpenGL编程(四)改变窗口大小时保持图形的原形
前面的例子,当我们通过拖拉的方法改变窗口的长宽比例时,窗口里的图形的长宽也相应地伸缩,导致图形变形。如下图:正如上图所示,当我们把窗口宽度拉长后,图形就会显得比较胖。同样,当我们把窗口的高度拉长后,图形会现的比较瘦。原因很简单,前面的文章已经提到过,绘图时我们使用的坐标是相对于窗口的坐标,当窗口的坐标系变化后,图形也相应地变化。如果做到在图形放大或缩小后不变形呢(宽高比不变)1、确保图形不变形的原理原创 2016-03-09 11:27:47 · 17553 阅读 · 0 评论 -
OpenGL编程(五)绘直线以及分析绘直线的算法
这次主要实现在窗口上绘制点、线以及修改其属性,另外还会分析画直线的原理和相关算法。1、在窗口指定位置画点 glBegin(GL_POINTS); glEnd(); 使用glBegin()和glEnd()方法向窗口中添加图形。要添加点时,glBegin()函数里的参数填GL_POINTS。然后通过glVertex3f()函数在指定的(坐标)位置画点,如:glVertex3原创 2016-03-13 22:15:28 · 3881 阅读 · 0 评论 -
OpenGL编程(六)通过三角形绘画出3D模型
使用三角形绘制3D模型 三角形是基本的多边形,任何多变形都能由三角形组成。三角形是由三个顶点的连线组成。三个点分别是v0;v1;v2。1、绕法 从某个顶点开始,有两种连线的方法,顺时针和逆时针,这是两种不同的绕法。2、连接多个三角形 三角形能拼出任何多边形平面或曲面。所以对于平面或曲面,我们只需要保存组成这个面的所有三角形的顶点以及拼法即可。例如某个面有n个三角形组成,我们需要保存3n个顶原创 2016-08-07 21:50:50 · 9377 阅读 · 3 评论 -
OpenGL编程(七)3D模型的深度(z轴)检测
下图是我们要修改后的效果图: 一、深度检测1、模型Z轴显示有问题: 上一次试验中,如果认真留意,会发现一个问题。当控制锥体在左右或上下旋转时,你会发现锥体看起来是在+-180度之间来回摆动,而不是360度的旋转。锥体的底面总是朝向观察者。这个我们可以通过修改锥体底面的颜色方便观察。如下图: 正如上面的两幅图,在不同的角度看,底面永远都是在最上面。其实这是跟我们前面代码上的画图有关。前面我们原创 2016-08-16 22:29:30 · 4353 阅读 · 0 评论 -
OpenGL编程(八)3D数学与坐标变换
笛卡尔坐标一维坐标系以一个点为原点,选定一个方向为正方向(相反的方向为反方向),以一定的距离为标尺建立一维坐标系。一维坐标系一般应用于描述在一维空间中的距离。 举个例子:一维坐标系好比一条拉直的电线(忽略长度),一只老鼠在电线上,对于这只老鼠来说,这个一维坐标系(电线)就是它的世界,只能沿着电线的方向向前或向后运动(当然也可以不动),这只老鼠这个时候是活在“一维”世界里。二维坐标系 百度百科原创 2016-12-10 11:35:24 · 2952 阅读 · 0 评论