OpenGL
Real Time Rendering Course
Real Time Rendering Course
http://cggmwww.csie.nctu.edu.tw/courses/rtr/2007/#CourseSchedule
OpenGL讲座稿_5. DirectX与OpenGL
DirectX是用途极为广泛的API,它并不局限于显示领域。目前的 DirectX中包含有Direct Graphics(Direct 3D + Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。但由于DirectX版本的更新主要在3D图形技术上,因此DirectX给人一种图形 API的感觉。
微软发布DirectX的初衷是为了弥补Windows系统对图形管理的不利,但第一代DirectX并未成功,因为当时Op … … … … 阅读更多
OpenGL讲座稿_4. OpenGL2.0
至OpenGL 1.3为止,OpenGL的发展几乎处于停滞不前的状态,主要的进展是OpenGL扩展指令的推出。这些扩展指令是一些绘图功能、视频及绘图的整合工具,组成了一个混乱的扩展指令组,其中许多都是为专用应用程序而设计的,对大多数需要一致性开发平台的ISV(独立软件开发商,Independent Software Vender)来说并不实用。ARB也已经发现为何无法将OpenGL往前推进的几个原因,包括知识产权(IP)争论的潜伏危机。希望参与ARB(委员会的策划)并提供技术、但也同时也想保护各自IP的厂商大感挫折。
在 2001年9月的ARB会议上,3Dlabs展示了他们的OpenGL 2. … … … … 阅读更多
OpenGL讲座稿_3. 发展历程
1. 1992年7月1日由SGI发布OpenGL 1.0版,同年ARB成立。此后的每一次版本升级都与上一个版本保持完全向下兼容(详见规范文档2.0 Appendix C-I)。
2. 1995年12月OpenGL 1.1面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括提高纹理映射能力,增加一些几何与片断操作,加入顶点数组,提高顶点坐标、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度等等。
a) 顶点数组(Vertex Array):将顶点信息表示成数组的形式传递给GL,以降低传输非显示列表数据过程中的子调用次数,提升传输效率(例如,充分利用DMA的硬件特性)。
b … … … … 阅读更多
OpenGL讲座稿_2. 功能与特点
OpenGL提供了以下基本操作:
1. 绘制图元:真实世界里的任何物体都可以在计算机中用简单的点、线、多边形来描述。OpenGL提供了丰富的基本图元绘制命令,从而可以方便地绘制物体。
2. 变换:可以说,无论多复杂的图形都是由基本图元组成并经过一系列变换来实现的。OpenGL提供了一系列基本的变换,如取景变换、模型变换、投影变换及视口变换。
3. 光照处理:正如自然界不可缺少光一样,绘制有真实感的三维物体必须做光照处理。
4. 着色:OpenGL提供了两种物体着色模式,一种是RGBA颜色模式,另一种是颜色索引模式。
5. 反走样:在OpenGL绘制图形过程中,由于使用的是位图,所以绘制出的图像 … … … … 阅读更多
OpenGL讲座稿_1. OpenGL简介
OpenGL (for “Open Graphics Library”) is a software interface to graphics hardware. The interface consists of a set of several hundred procedures and functions that allow a programmer to specify the objects and operations involved in producing high-quality graphical images, specifically … … … … 阅读更多
OpenGL中所有受当前ModelViewMatrix影响的参数设定
OpenGL中所有受当前ModelViewMatrix影响的参数设定
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
The position is transformed by the modelview matrix when glLight is called (just as if it were a point), and it is stored in eye coordinates.
如上,传入的光位置参数是定义在模型坐标系下的,但被保存在镜头空间中.且除非再次指定,该值不变,即相当于光的位置相对镜头固定.这通常不是我们想要的, 通常光应 … … … … 阅读更多
关于normal在eye坐标系下的变化
参考资料:http://www.lighthouse3d.com/opengl/glsl/index.php?normalmatrix 由于需要在视觉空间进行大量的计算, 所以光照需要在视觉空间中进行计算. 因此我们需要求出视觉空间中的法线向量. 转换一个顶点进入视觉坐标的公式如下: vertexEyeSpace = gl_ModelViewMatrix * gl_Vertex; 但是为何我们不能够对法线向量做相同的事情呢? 首先, 法线向量是一个拥有三个元素的一维向量, 模型视图矩阵则是4×4矩阵 这点可以用下面的代码轻易解决: normalEyeSpace = vec3(gl_M … … … … 阅读更多
绕任意单位轴旋转任意角度的结果矩阵
绕任意单位轴旋转任意角度的结果矩阵
单位旋转轴:
rx、ry、rz
旋转角:
Φ
opengl的glRotate*函数内部即是计算该矩阵的,不碍比较试试(ps:通过glGetFloat*函数)。显然,绕任意单位轴旋转任意角同样是以旋转向量经过原点为前提的。
另外值得注意的地方是,opengl内部矩阵是按照列序存储的,所以上面的矩阵如果让opengl使用,还要经过一次转置计算。
最后一点,注意角度和弧度的转换
TrackBack: http://blog.chinaunix.net/u2/62895/showart_685396.html
深入探索透视投影变换
好文章,记得刚开始接触ogl时,阅读过此文,当时看的云里雾里。现在看来,不禁要称赞作者,能写的如此详细。感谢作者的好文!
深入探索透视投影变换
透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。
透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。
没错,主流的3D APIs如Op … … … … 阅读更多
