opengl
江荣波
这个作者很懒,什么都没留下…
展开
-
OpenGL编程逐步深入(三)在窗口中显示一个三角形
这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来。 本节我们以下图所示正方形来讲解OpenGl中的坐标系统。当沿着Z轴负方向看时,可见顶点的坐标必须在这个正方形内,这样视口变换才可以將它们映射到窗口中的可见区域。翻译 2015-04-13 19:13:35 · 1074 阅读 · 0 评论 -
OpenGL编程逐步深入(十)索引绘制
OpenGl提供了一些绘图函数。到目前为止我们使用的glDrawArrays绘图函数属于”顺序绘制”。这意味着顶点缓冲区从指定的偏移量开始被扫描,每X(点为1,直线为2等)个顶点构成一个图元。这样使用起来非常方便,缺点是当多个图元共用一个顶点时,这个顶点必须在顶点缓冲区中出现多次。也就是说,这些顶点没有共享的概念。属于”索引绘制”的函数则提供这种共享机制。翻译 2015-04-28 20:38:14 · 1960 阅读 · 1 评论 -
OpenGL编程逐步深入(九)插值处理
注:文中VS代指顶点着色器,FS代指片段着色器。这个教程和大家展示3d管道中非常重要的部分,即Interpolation(插值)。光栅化程序执行的插值变量由VS产生。正如你已经见到过的,为了在屏幕中显示一些有意义的东西,你需要在vertex shader中指定一个输出变量’gl_Position’。它是一个包含顶点坐标的有4个分量的向量。x/y/z分量会和w分量做除法运算,任何分量超出规范化正方形翻译 2015-04-25 15:00:41 · 5963 阅读 · 0 评论 -
OpenGL编程逐步深入(四)Shaders
OpenGl 中的 Shader在一些中文书籍或资料中都被翻译为“着色器”, 单从字面意思也看不出Shader到底是什么,Shader实际上就是一段代码,用于完成特定功能的一个模块。Shader分为Vertex Shader(顶点着色器)和Pixel Shader(像素着色器)两种,其中Pixel Shader在本文中又被称为Fragment Shader(片段着色器)翻译 2015-04-17 14:58:37 · 3088 阅读 · 0 评论 -
OpenGL编程逐步深入(八)伸缩变换
准备知识伸缩变换非常简单,它的目的是增大或者缩小对象的尺寸。例如:你可能希望用同一个模型创建不同大小的对象(例如形状相同,但大小不同的树木)或者你想改变对象的大小使它和游戏场景匹配。这些例子中你可能需要X、Y、Z三个坐标轴缩放相同的量,但有时候我们只需要沿着一个或者两个轴缩放使模型变“粗”或变“细”。翻译 2015-04-24 21:07:30 · 1347 阅读 · 0 评论 -
OpenGL编程逐步深入(七)旋转变换
这一节我们来看一下旋转变换。旋转变换指的是给我们一个指点的点和角度,我们需要绕着过该点的轴线將对象旋转对应的角度。这里我们只改变X/Y/Z中的两个分量,第三个分量保持不变。这意味着我们的图形只在三个平面内旋转:XY平面(绕着Z轴)、YZ平面(绕着X轴)、XZ(绕着Y轴)。还有更复杂的旋转方式这里我们暂时用不到。我们来概括性的定义这个问题。考虑下面这样的图形翻译 2015-04-23 20:27:15 · 2834 阅读 · 0 评论 -
OpenGL编程逐步深入(六)平移变换
从这一节我们开始接触3D对象各种各样的变换,使其显示在屏幕上看起来有深度的感觉。通常每一种变换都是通过矩阵来实现的,把这些变换矩阵逐个的乘起来,然后用乘积乘以顶点位置。在每个教程中,我们致力于研究一种变换。这里我们看一下平移变换,它负责把一个对象沿着一个向量移动一定的方向和距离。比如说你想把三角形从左图的位置移动到右图的位置。翻译 2015-04-22 15:52:08 · 1543 阅读 · 0 评论 -
OpenGL编程逐步深入(一)创建一个窗口
原文中使用gnu make进行项目管理,本系列文章使用visual studio2012。在翻译过程中并非直译,加入了一些笔者个人观点。翻译 2015-04-09 15:55:11 · 3404 阅读 · 0 评论 -
OpenGL编程逐步深入(五)Uniform 变量
在这个教程中我们会遇到一种新的Shader变量类型,即uniform变量。attribute(属性)变量和uniform变量的不同之处在于attribute 变量中包含顶点的具体数据,当每次执行shader调用时会从顶点缓存中重新加载一个新的值。而uniform类型的变量在整个绘制调用中始终使用同一个变量。这意味着你在绘制调用前加载的值在每个vertex shader调用时能访问到相同的值。翻译 2015-04-18 12:10:51 · 5515 阅读 · 0 评论 -
OpenGL编程逐步深入(二)在窗口中显示一个点
准备知识在本文中我们将会接触到OpenGl的扩展库GLEW( OpenGL Extension Wrangler Library),GLEW可以帮助我们处理OpenGl中繁琐的扩展管理。一旦初始化后可以查询当前平台中所有可用的扩展,能够动态的加载它们并通过一个单独的头文件来方便的使用这些扩展。翻译 2015-04-11 09:58:34 · 1981 阅读 · 0 评论 -
OpenGL编程逐步深入(十一)组合变换
准备知识在前面的几节教程中,我们已经提到过几种变换,为物体在3D世界中的移动提供的极大的灵活性。但是我们还有很多东西需要学习(如摄像机控制和透视投影),你可以已经猜到,我们需要將这些变换组合起来。在很多情况下,你可能需要缩放一个物体使它适合3D场景,然后还要旋转使它面向正确的方向,接着把它移动到合适的位置。到现在为止我们都在练习一次只做一个变换,为了执行一系列的变换,我们要用顶点位置乘上第一个变换矩翻译 2015-05-06 22:28:15 · 1643 阅读 · 0 评论