拓幻图形学工程师教学手册(第二讲)|一字一字敲出OpenGL学习教程

上一节我们提到过模型变换时有旋转操作,那么在坐标系中,旋转的方向是怎样呢?比如旋转90度,到底向左是正还是右是正呢?我们可以用右手法则来进行正方向判断:

图中所示就是右手坐标系中旋转正方向。

3.3 3D绘制
下面到代码讲解。最基础的图形学,总要先画最基础的图形吧,那么现在来看以下代码:


看到glBegin括号里GL_LINE_STRIP了吗?顾名思义,画的是一条连线。glVertex3f是用来绘制顶点,坐标为括号里的值,这里我们画了v0,v1,v2,v3,v4 四个顶点,并将其按照顺序连接成以v0为首,v4为尾的一条线段。

我们改变括号里的参数,那么就可以画出不同的图形。对照表如下所示:

注意,在gl_Begin和gl_End中间是所绘制使用的顶点。比如现在画两个三角形,那么在画第一个三角形时,顶点使用v0, v1,v2,那么gl_Begin和gl_End代码中间需要添加的就是绘制的就是v0, v1,v2 的顶点代码,对应第二个三角形再加的就是第二个三角形顶点的绘制代码。

在这里我们再结合图形几何和拓扑的概念理解一下,图形的几何发生改变其实改变的是顶点坐标位置,也就是glVertex3f函数中参数的值。拓扑发生改变其实是gl_Begin和gl_End中间夹着的顶点代码的顺序,比如先画v0, 再画v1,最后画v2 ,还是先画v1, 再画v2,最后画v0 .

下面解释一下第一行:glColor函数。我们可以看到这里它的三个参数我是用r,g,b代替的。那么rgb是什么呢?r是red 红,g是green 绿,b是blue 蓝。小学学过,光的三原色,由他们可以组合出任意颜色。需要提到的是在OpenGL glColor中,颜色rgb的范围都是在0~1之间不会小于0,也不会大于1. 0代表程度无,1代表程度最深。颜色叠加图我这里就不多做介绍了,上过小学中学美术的都该知道。

OK。到目前为止,你已经能够用最简单的OpenGL代码绘制最简单的图形,甚至改变颜色啦。

又来提醒你,刚刚我们提到过模型变换还记得吗?我们通过平移,旋转,缩放来实现模型变换。那么我们如何使用OpenGL进行平移,旋转,缩放呢?

答案在这里:

原文地址:https://blog.51cto.com/14528075/2437384

时间: 2024-12-09 19:31:37

拓幻图形学工程师教学手册(第二讲)|一字一字敲出OpenGL学习教程的相关文章

拓幻图形学工程师教学手册(第一讲)|一字一字敲出OpenGL学习教程

动机首先申明,我是拓幻科技图形处理工程师,自己接触OpenGL,图形图像等方面也有六年多了,很多人其实并不了解这方面,也不了解如何系统地去学,我觉得基于我硕士时期的课程和经验给大家.这些资料和经验也得感谢我的老师,来自普渡大学的终生教授迈克 贝利(Mike Bailey). 以此连载OpenGL学习教程,给大家讲解,一起学习一下,不对之处,欢迎大家指出讨论. 所有渲染工作都离不开OpenGL, 着色器(Shader)这些,如果你和我一样对图形处理比较感兴趣的话,可能你和当初的我有着同样的困惑:如

拓幻图形学工程师教学手册(第四讲)|一字一字敲出OpenGL学习教程

上一讲已经介绍了基础的OpenGL知识和绘制方面的内容.示例代码都会在我们公司Github找到.Github请搜索Tillusory可以看到.代码都是有注释的,运行环境是Mac OSX的Xcode.win版本的童鞋可以下下来之后放到VS中跑,环境搭建资料很多,有问题的可私信微信公众号. 纹理映射4.1 基本概念上一讲提到绘制太阳系,那么只是学了上一讲,最多就是画几个球,移动位置,做各种旋转运动等等,这怎么是太阳系.太阳,和各大行星至少要有表面图案吧,那么怎么把这些图案覆盖到球体表面呢? 先来了解

拓幻图形学工程师教学手册(第八讲)|一字一字敲出OpenGL学习教程

上次教程关于光照,这次内容会比较复杂,关于着色器(Shader),GLSL(OpenGL Shading Language).对于初次接触图形学的童鞋,可能比较晦涩.并且用Mac开发的同学注意,本教程中有关Shader内容,环境均为win下VS,但这并不代表Mac不支持Shader,只是需要配置一些环境,Google可以百度一下. 着色器(Shader)6.1 着色器分类还记得第一讲中的管线图吗?有个词叫光栅化,记得吗?在光栅化之前都是对顶点进行变换,顶点光照和投影变换等,这些都是对顶点进行操作

拓幻图形学工程师教学手册(第六讲)|一字一字敲出OpenGL学习教程

上一讲已经介绍了的OpenGL纹理部分的内容,今天这讲关于OpenGL光照(Lighting)示例代码也都在公司github共有仓了,不知道各位是不是试着跑过,没跑过也不要紧,继续往下听吧,最后总要实践的,讲再多不如自己上手一试.我记得Dr. Lee当初还做了蛮多不错的示例代码,比如旋转的五彩菊花,回头我让他贡献一下他的五彩菊花,放到我们的Github上给大家参考.后期Dr. Lee也将推出一些他自己的教程,这可是来自美国克莱姆森大学的教程,大家不要错过,关注我们微信公众号,一起来学习吧. 光照

通达OA 二次开发培训第二讲

本次是通达OA二次开发第二讲,主要介绍了如何在通达OA中进行程序开发,并将开发程序挂接到OA系统中.

从大数据菜鸟走上大师的历程 第二讲:函数定义,流程控制,异常处理

Scala 第二讲 函数定义,流程控制,异常处理 For 循环  for(左边为单个对象obj  <-  右边为对象集合objs ) for 循环里把右边的对象赋给左边 现在正是学习大数据的最好机遇,不花一分钱就可以成为大数据高手,实现年薪50万的梦想. 王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员! 如果您有兴趣请点击这个链接进入大数据的学习 http://blog.sina.com.cn/s/blog_8fbd39ee0102vto3.html 如果您确实感觉视频教程

机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法.下面将笔记整理在下面. Perceptron Hypothesis Set 延续前面的信用卡发放问题.银行已有的用户数据可能包括用户的年龄.年薪.工作时长.债务情况等特征信息,我们分别用x1,x2,-,xd来表示,那么对于每一个用户都有一个向量来表示其信息.我们为每一个特征信息分配一个权

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

《上古天真论》第二讲文字版

上古天真论篇第二讲 主讲:徐文兵  主持:梁  冬 播出时间:2008-12-20  23:00—24:00     经文:食饮有节,起居有常,不妄作劳,故能形与神俱,而尽其天年,度百岁乃去.今时之人不然也,以酒为浆,以妄为常,醉以入房,以欲竭其精,以耗散其真,不知持满,不时御神,务快其心,逆于生乐,起居无节,故半百而衰也. 梁:辅佐中国文化,发扬光大,大家好我的梁东,在我面前的是我非常尊敬的厚朴中医学堂的堂主徐文兵老师. 徐:梁东好,听众朋友们,大家好! 梁:大家好!我们计划,从新发现中医太美