向3D进军:Jeff Molofee(NeHe) 的 OPENGL 教程 -第五课

OpenGL 专栏收录该内容
11 篇文章 0 订阅

Jeff Molofee(NeHe) 的 OPENGL 教程

第五课

Translated by
CKER

Lesson 5 第五课


在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D世界中的2D对象。我们给三角形增加一个左侧面,一个右侧面,一个后侧面来生成一个金字塔(四棱锥)。给正方形增加左、右、上、下及背面生成一个立方体。

我们混合金字塔上的颜色,创建一个平滑着色的对象。给立方体的每一面则来个不同的颜色。
int DrawGLScene(GLvoid) // 此过程中包括所有的绘制代码
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 清除屏幕及深度缓存
glLoadIdentity();
// 重置模型观察矩阵
glTranslatef(-1.5f,0.0f,-6.0f); // 左移 1.5 单位,并移入屏幕 6.0

glRotatef(rtri,0.0f,1.0f,0.0f);
// 绕Y轴旋转金字塔

glBegin(GL_TRIANGLES); // 开始绘制金字塔的各个面
有些人可能早已在上节课中的代码上尝试自行创建3D对象了。但经常有人来信问我:"我的对象怎么不会绕着其自身的轴旋转?看起来总是在满屏乱转。"要让您的对象绕自身的轴旋转,您必须让对象的中心坐标总是(0.0f,0,0f,0,0f)。
下面的代码创建一个绕者其中心轴旋转的金字塔。金字塔的上顶点离中心一个单位,底面离中心也是一个单位。上顶点在底面的投影位于底面的中心。

注意所有的面-三角形都是逆时针次序绘制的。这点十分重要,在以后的课程中我会作出解释。现在,您只需明白要么都逆时针,要么都顺时针,但永远不要将两种次序混在一起,除非您有足够的理由必须这么做。

我们开始画金字塔的前侧面。因为所有的面都共享上顶点,我们将这点在所有的三角形中都设置为红色。底边上的两个顶点的颜色则是互斥的。前侧面的左下顶点是绿色的,右下顶点是蓝色的。这样相邻右侧面的左下顶点是蓝色的,右下顶点是绿色的。这样四边形的底面上的点的颜色都是间隔排列的。
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f);
// 三角形的上顶点 (前侧面)
glColor3f(0.0f,1.0f,0.0f);
// 绿色
glVertex3f(-1.0f,-1.0f, 1.0f);
// 三角形的左下顶点 (前侧面)
glColor3f(0.0f,0.0f,1.0f);
// 蓝色
glVertex3f( 1.0f,-1.0f, 1.0f);
// 三角形的右下顶点 (前侧面)
现在绘制右侧面。注意其底边上的两个顶点的X坐标位于中心右侧的一个单位处。顶点则位于Y轴上的一单位处,且Z坐标正好处于底边的两顶点的Z坐标中心。右侧面从上顶点开始向外侧倾斜至底边上。
这次的左下顶点用蓝色绘制,以保持与前侧面的右下顶点的一致。蓝色将从这个角向金字塔的前侧面和右侧面扩展并与其他颜色混合。
还应注意到后面的三个侧面和前侧面处于同一个glBegin(GL_TRIANGLES) 和 glEnd()语句中间。因为我们是通过三角形来构造这个金字塔的。OpenGL知道每三个点构成一个三角形。当它画完一个三角形之后,如果还有余下的点出现,它就以为新的三角形要开始绘制了。OpenGL在这里并不会将四点画成一个四边形,而是假定新的三角形开始了。所以千万不要无意中增加任何多余的点。
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f);
// 三角形的上顶点 (右侧面)
glColor3f(0.0f,0.0f,1.0f);
// 蓝色
glVertex3f( 1.0f,-1.0f, 1.0f);
// 三角形的左下顶点 (右侧面)
glColor3f(0.0f,1.0f,0.0f);
// 绿色
glVertex3f( 1.0f,-1.0f, -1.0f);
// 三角形的右下顶点 (右侧面)
现在是后侧面。再次切换颜色。左下顶点又回到绿色,因为后侧面与右侧面共享这个角。
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f);
// 三角形的上顶点 (后侧面)
glColor3f(0.0f,1.0f,0.0f);
// 绿色
glVertex3f( 1.0f,-1.0f, -1.0f);
// 三角形的左下顶点 (后侧面)
glColor3f(0.0f,0.0f,1.0f);
// 蓝色
glVertex3f(-1.0f,-1.0f, -1.0f);
// 三角形的右下顶点 (后侧面)
最后画左侧面。又要切换颜色。左下顶点是蓝色,与后侧面的右下顶点相同。右下顶点是蓝色,与前侧面的左下顶点相同。
到这里金字塔就画完了。因为金字塔只绕着Y轴旋转,我们永远都看不见底面,因而没有必要添加底面。如果您觉得有经验了,尝试增加底面(正方形),并将金字塔绕X轴旋转来看看您是否作对了。确保底面四个顶点的颜色与侧面的颜色相匹配。
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f);
// 三角形的上顶点 (左侧面)
glColor3f(0.0f,0.0f,1.0f);
// 蓝色
glVertex3f(-1.0f,-1.0f,-1.0f);
// 三角形的左下顶点 (左侧面)
glColor3f(0.0f,1.0f,0.0f);
// 绿色
glVertex3f(-1.0f,-1.0f, 1.0f);
// 三角形的右下顶点 (左侧面)
glEnd();
file://金字塔绘制结束
接下来开始画立方体。他由六个四边形组成。所有的四边形都以逆时针次序绘制。就是说先画右上角,然后左上角、左下角、最后右下角。您也许认为画立方体的背面的时候这个次序看起来好像顺时针,但别忘了我们从立方体的背后看背面的时候,与您现在所想的正好相反。(译者注:您是从立方体的外面来观察立方体的)。
注意到这次我们将立方体移地更远离屏幕了。因为立方体的大小要比金字塔大,同样移入6个单位时,立方体看起来要大的多。这是透视的缘故。越远的对象看起来越小 :)
glLoadIdentity();
glTranslatef(1.5f,0.0f,-7.0f);
// 先右移再移入屏幕

glRotatef(rquad,1.0f,1.0f,1.0f);
// 在XYZ轴上旋转立方体

glBegin(GL_QUADS);
// 开始绘制立方体
先画立方体的顶面。从中心上移一单位,注意Y坐标始终为一单位,表示这个四边形与Z轴平行。先画右上顶点,向右一单位,再屏幕向里一单位。然后左上顶点,向左一单位,再屏幕向里一单位。然后是靠近观察者的左下和右下顶点。就是屏幕往外一单位。
glColor3f(0.0f,1.0f,0.0f); // 颜色改为蓝色
glVertex3f( 1.0f, 1.0f,-1.0f);
// 四边形的右上顶点 (顶面)
glVertex3f(-1.0f, 1.0f,-1.0f);
// 四边形的左上顶点 (顶面)
glVertex3f(-1.0f, 1.0f, 1.0f);
// 四边形的左下顶点 (顶面)
glVertex3f( 1.0f, 1.0f, 1.0f);
// 四边形的右下顶点 (顶面)
底面的画法和顶面十分类似。只是Y坐标变成了-1。如果我们从立方体的下面来看立方体的话,您会注意到右上角离观察者最近,因此我们先画离观察者最近的顶点。然后是左上顶点最后才是屏幕里面的左下和右下顶点。

如果您真的不在乎绘制多边形的次序(顺时针或者逆时针)的话,您可以直接拷贝顶面的代码,将Y坐标从1改成 -1,也能够工作。但一旦您进入象纹理映射这样的领域时,忽略绘制次序会导致十分怪异的结果。
glColor3f(1.0f,0.5f,0.0f); // 颜色改成橙色
glVertex3f( 1.0f,-1.0f, 1.0f);
// 四边形的右上顶点(底面)
glVertex3f(-1.0f,-1.0f, 1.0f);
// 四边形的左上顶点(底面)
glVertex3f(-1.0f,-1.0f,-1.0f);
// 四边形的左下顶点(底面)
glVertex3f( 1.0f,-1.0f,-1.0f);
// 四边形的右下顶点(底面)
接着画立方体的前面。保持Z坐标为一单位,前面正对着我们。
glColor3f(1.0f,0.0f,0.0f); // 颜色改成红色
glVertex3f( 1.0f, 1.0f, 1.0f);
// 四边形的右上顶点(前面)
glVertex3f(-1.0f, 1.0f, 1.0f);
// 四边形的左上顶点(前面)
glVertex3f(-1.0f,-1.0f, 1.0f);
// 四边形的左下顶点(前面)
glVertex3f( 1.0f,-1.0f, 1.0f);
// 四边形的右下顶点(前面)
立方体后面的绘制方法与前面类似。只是位于屏幕的里面。注意Z坐标现在保持 -1 不变。
glColor3f(1.0f,1.0f,0.0f); // 颜色改成黄色
glVertex3f( 1.0f,-1.0f,-1.0f);
// 四边形的右上顶点(后面)
glVertex3f(-1.0f,-1.0f,-1.0f);
// 四边形的左上顶点(后面)
glVertex3f(-1.0f, 1.0f,-1.0f);
// 四边形的左下顶点(后面)
glVertex3f( 1.0f, 1.0f,-1.0f);
// 四边形的右下顶点(后面)
还剩两个面就完成了。您会注意到总有一个坐标保持不变。这一次换成了X坐标。因为我们在画左侧面。
glColor3f(0.0f,0.0f,1.0f); // 颜色改成蓝色
glVertex3f(-1.0f, 1.0f, 1.0f);
// 四边形的右上顶点(左面)
glVertex3f(-1.0f, 1.0f,-1.0f);
// 四边形的左上顶点(左面)
glVertex3f(-1.0f,-1.0f,-1.0f);
// 四边形的左下顶点(左面)
glVertex3f(-1.0f,-1.0f, 1.0f);
// 四边形的右下顶点(左面)
立方体的最后一个面了。X坐标保持为一单位。逆时针绘制。您愿意的话,留着这个面不画也可以,这样就是一个盒子:)

或者您要是有兴趣可以改变立方体所有顶点的色彩值,象金字塔那样混合颜色。您会看见一个非常漂亮的彩色立方体,各种颜色在它的各个表面流淌。
glColor3f(1.0f,0.0f,1.0f); // 颜色改成紫罗兰色
glVertex3f( 1.0f, 1.0f,-1.0f);
// 四边形的右上顶点(右面)
glVertex3f( 1.0f, 1.0f, 1.0f);
// 四边形的左上顶点(右面)
glVertex3f( 1.0f,-1.0f, 1.0f);
// 四边形的左下顶点(右面)
glVertex3f( 1.0f,-1.0f,-1.0f);
// 四边形的右下顶点(右面)
glEnd();
// 立方体绘制结束

rtri+=0.2f; // 增加三角形的旋转变量(新增)
rquad-=0.15f; // 减少四边形的旋转变量(新增)
return TRUE; // 继续运行
}
这一课又结束了。到这里您应该已经较好的掌握了在3D空间创建对象的方法。必须将OpenGL屏幕想象成一张很大的画纸,后面还带着许多透明的层。差不多就是个由大量的点组成的立方体。这些点从左至右、从上至下、从前到后的布满了这个立方体。如果您能想象的出在屏幕的深度方向,应该在设计新3D对象时没有任何问题。

如果您对3D空间的理解很困难的话,千万不要灰心! 刚开始的时候,领会这些内容会很难。象立方体这样的对象是您练习的好例子。继续努力吧!如果您有什么意见或建议请给我EMAIL。如果您认为有什么不对或可以改进,请告诉我。我想做最好的OpenGL教程并对您的反馈感兴趣。

{译者:NeHe的文档似乎很简单,似乎很罗嗦。但仔细想来这样的高手您又见过几个?还是那句话,我不是高手,希望您是,真诚的。}
下面是源代码下载链接。祝您好运!
* DOWNLOAD Visual C++ Code For This Lesson.
* DOWNLOAD Visual Basic Code For This Lesson. ( Conversion by Ross Dawson )
* DOWNLOAD GLUT Code For This Lesson. ( Conversion by Andy Restad )
* DOWNLOAD Cygwin (FREE Language) Code For This Lesson. ( Conversion by Stephan Ferraro )
* DOWNLOAD Delphi Code For This Lesson. ( Conversion by Peter De Jaegher )
* DOWNLOAD MacOS X/GLUT Code For This Lesson. ( Conversion by Raal Goff )
* DOWNLOAD Linux/GLX Code For This Lesson. ( Conversion by Mihael Vrbanec )
* DOWNLOAD Code Warrior 5 Code For This Lesson. ( Conversion by Scott Lupton )
* DOWNLOAD MASM Code For This Lesson. ( Conversion by Nico (Scalp) )
* DOWNLOAD ASM Code For This Lesson. ( Conversion by Foolman )
* DOWNLOAD Visual Fortran Code For This Lesson. ( Conversion by Jean-Philippe Perois )
* DOWNLOAD Linux Code For This Lesson. ( Conversion by Richard Campbell )
* DOWNLOAD Irix Code For This Lesson. ( Conversion by Lakmal Gunasekara )
* DOWNLOAD Solaris Code For This Lesson. ( Conversion by Lakmal Gunasekara )
* DOWNLOAD Mac OS Code For This Lesson. ( Conversion by Anthony Parker )
* DOWNLOAD Power Basic Code For This Lesson. ( Conversion by Angus Law )
* DOWNLOAD BeOS Code For This Lesson. ( Conversion by Chris Herborth )
* DOWNLOAD Java Code For This Lesson. ( Conversion by Darren Hodges )
* DOWNLOAD MingW32 & Allegro Code For This Lesson. ( Conversion by Peter Puck )
* DOWNLOAD Borland C++ Builder 4.0 Code For This Lesson. ( Conversion by Patrick Salmons )
* DOWNLOAD Python Code For This Lesson. ( Conversion by Tony Colston )
  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
1.创建一个OpenGL窗口: 在这个教程里,我将教你在Windows环境中创建OpenGL程序.它将显示一个空OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序框架. 理解OpenGL如何工作非常重要,你可以在教程末尾下载源程序,但我强烈建议你至少读一遍教程,然后再开始编程. 2.你第一个多边形: 在第一个教程基础上,我们添加了一个三角形和一个四边形。也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制模型都会被分解为这两种简单图形。 读完了这一课,你会学到如何在空间放置模型,并且会知道深度缓存概念。 3.添加颜色: 作为第二课扩展,我将叫你如何使用颜色。你将理解两种着色模式,在左图中,三角形用是光滑着色,四边形用是平面着色。 注意三角形上颜色是如何混合。 颜色为OpenGlL 工程增加很多。通过理解平面着色(flat coloring)和平滑着色(smooth coloring),你能显著改善你OpenGL Demo样子。 4.旋转: 在这一课里,我将教会你如何旋转三角形和四边形。左图中三角形沿Y轴旋转,四边形沿着X轴旋转。 这一章将引入两个变量, rtri 被用来存储三角形角度, rquad存储四边形角度。 和容易创建一个多边形组成场景。让这些物体动起来是整个场景变得生动起来。在后面课程钟我将教给你如何绕屏幕上一个点旋转物体,使得物体绕屏幕而不是它轴转动。 5.3D形体: 既然我们已经领会到多边形,方形,色彩和旋转。现在该建立3D物体了。我将使用多边形和矩形c创建3D物体。这次我们将扩展上一章教程,并且将三角形转换成一个彩色棱锥,把正方形变为一个实心正方体。棱锥使用混合色,正方体每个面使用一种颜色。在3D空间创建物体可能很费时间,但是所获得结果(收获)值得这样做。充分发挥你想象力吧。 6.纹理映射: 你想要它,它现在就在这里了,那就是 ... 纹理映射!!!在这一章我将教会你如何将一幅位图(bitmap)映射到正方体六个面上去。我们将使用第一章OpenGL代码来创建工程。创建一个空窗口比修改上一课代码更容易。 你将会发现第一章代码在对于快速创建工程来说是及其有价值。第一章代码为你设置好了一切,你所需要做只是集中精力为效果编程。 7.纹理滤波, 光照和键盘控制: 好,我希望到现在你已经理解了所有东西,因为这是一个巨大教程。我想教给你两个新方法来过滤(filter)纹理,简单光照,键盘控制并且还可能更多 :) .如果你对到这一课为止你所学东西并不充满信心,那就回头复习一下。玩一下其它课程代码,不要操之过急。最好专心把每一课学好,而不是蜻蜓点水,只知道如何把东西做出来。 8.混合 有理由等一下,一个来自很酷Hypercosm程序员伙伴问(我)他是否可以写一章关于混合教程。第八课通常正是讲混合,所以太巧了。这一章教程扩展了第七章。混合是一项很酷技术 .. 我希望你们能好好享受这一章教程。这一章作者是Tom Stanis他在这制作一章上花费了很多精力,所以让他知道你觉得怎么样。混合可不是一个好讲话题。 9.在3D空间中移动位图: 这一章覆盖了一些你们要求主题,你想知道如何移动你在3D屏幕空间上创造物体。你想要知道如何在屏幕上绘制一幅位图,并且位图黑色部分不会覆盖它后面东西。你想要简单动画,想要更多混合应用,这一章将教会你所有这些。You'll notice there's no spinning boxes(yaker:很惭愧这一句我不是很明白)。前面课程覆盖了OpenGL基础,每一章都基于前面内容。前面课程涵盖了基础OpenGL,每一课都是在前一课基础上创建。这一课是前面几课知识综合,当你学习这课时,请确保你已经掌握了前面几课知识。 10.加载3D世界,并在其中漫游: 你一直期待教程来了!这一章友一个叫Lionel Brites伙伴制作。这一课里你讲学到如何导入一个3D世界。代码仍然使用第一章,但是,课程页面只是解释了新部分,包括导入3D场景,在3D世界中移动。下载VC++代码并且在你阅读教程同时阅读代码。按[B]键控制混合,[F]键控制滤波,[L]键控制光照(但光并不随场景移动),还有[Page UP]和[Page Down]键。我希望你能喜欢Lionel对网站贡献。我有空时候我会让这个教程更容易学习。 11.旗帜效果 (飘动纹理) 这一章教程由Bosco带给你。他就是那个创造了很酷小Demo: worthless家伙。他喜欢每个人对他Demo反映,并且决定更进一步,在他Demo最后解释他怎么实现这么酷效果。这一章教程构建在第六章代码之上。阅读完这一章之后,你将能弯曲,折叠以及操纵你自己纹理。这绝对是个很漂亮效果,并且比纹理固定旗帜好得多。如果你喜欢这一章,请发邮件给bosco让他知道。 12.显示列表 想知道如何加速你OpenGL程序么?每次为放置一个物体在屏幕上而写很多代码让你厌烦了吧?如果是这样,这一章就是为你准备。学习如何用OpenGL来显示列表。只用一行代码预构建和显示物体。使用预编译物体加速你程序。不要再一次又一次写重复代码。让显示列表为你做所有工作吧!这一章里我们将建造Q-bert金字塔(Q-bert是一款游戏),感谢显示列表,我们只需要用不多几行代码。 13.位图字体 这一课我们将创建一些基于2D图像字体,它们可以缩放,但不能旋转,并且总是面前方,但作为基本显示来说,我想已经够了。 14.图像字体 在一课我们将教你绘制3D图形字体,它们可像一般3D模型一样被变换。 15.图形字体纹理映射: 这一课,我们将在上一课基础上创建带有纹理字体,它真很简单。 16.看起来很酷雾 这一课是基于第7课代码,你将学会三种不同计算方法,以及怎样设置雾颜色和雾范围。 17.2D 图像文字 在这一课中,你将学会如何使用四边形纹理贴图把文字显示在屏幕上。你将学会如何把256个不同文字从一个256x256纹理图像中分别提取出来,并为每一个文字创建一个显示列表,接着创建一个输出函数来创建任意你希望文字。 18.二次几何体 利用二次几何体,你可以很容易创建球,圆盘,圆柱和圆锥。 19.粒子系统 你是否希望创建爆炸,喷泉,流星之类效果。这一课将告诉你如何创建一个简单例子系统,并用它来创建一种喷射效果。 20.蒙板 到目前为止你已经学会如何使用alpha混合,把一个透明物体渲染到屏幕上了,但有使用它看起来并不是那么复合你心意。使用蒙板技术,将会按照你蒙板位置精确绘制。 21.线,反走样,计时,正投影和简单声音 这是我第一个大教程,它将包括线,反走样,计时,正投影和简单声音。希望这一课中东西能让每个人感到高兴。 22.凹凸映射,多重纹理扩展 这是一课高级教程,请确信你对基本知识已经非常了解了。这一课是基于第六课代码,它将建立一个非常酷立体纹理效果。 23.球面映射 这一个将教会你如何把环境纹理包裹在你3D模型上,让它看起来象反射了周围场景一样。 24.符号,扩展,剪裁和TGA图像文件加载 在这一课里,你将学会如何读取你显卡支持OpenGL扩展,并在你指定剪裁区域把它显示出来。 25.变形和从文件中加载3D物体 在这一课中,你将学会如何从文件加载3D模型,并且平滑从一个模型变换为另一个模型。 26.剪裁平面,蒙板缓存和反射 在这一课中你将学会如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级技巧。 27.阴影 这是一个高级主题,请确信你已经熟练掌握了基本OpenGL,并熟悉蒙板缓存。当然它会给你留下深刻印象。 28.贝塞尔曲面 这是一课关于数学运算,没有别内容了。来,有信心就看看它吧。 29.Blitter 函数 类似于DirectDrawblit函数,过时技术,我们有实现了它。它非常简单,就是把一块纹理贴到另一块纹理上。 30.碰撞检测 这是一课激动教程,你也许等待它多时了。你将学会碰撞剪裁,物理模拟太多东西,慢慢期待吧。 31.模型加载 你知道大名鼎鼎Milkshape3D建模软件么,我们将加载它模型,当然你可以加载任何你认为不错模型。 32.拾取, Alpha混合, Alpha测试, 排序 这又是一个小游戏,交给东西会很多,慢慢体会吧 33.加载压缩和未压缩TGA文件 在这一课里,你将学会如何加载压缩和为压缩TGA文件,由于它使用RLE压缩,所以非常简单,你能很快地熟悉它。 34.从高度图生成美丽地形 这一课将教会你如何从一个2D灰度图创建地形 35.在OpenGL中播放AVI视频 在OpenGL中如何播放AVI呢?利用WindowsAPI把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它效果不错。你可以试试。 36.放射模糊和渲染到纹理 如何实现放射状滤镜效果呢,看上去很难,其实很简单。把渲染得图像作为纹理提取出来,在利用OpenGL本身自带纹理过滤,就能实现这种效果,不信,你试试。 37.卡通映射 什么是卡通了,一个轮廓加上少量几种颜色。使用一维纹理映射,你也可以实现这种效果。 38.从资源文件中载入图像 如何把图像数据保存到*.exe程序中,使用Windows资源文件吧,它既简单又实用。 39.物理模拟简介 还记得高中物理吧,直线运动,自由落体运动,弹簧。在这一课里,我们将创造这一切。 40.绳子模拟 怎样模拟一根绳子呢,把它想象成一个个紧密排列点,怎么样有了思路了吧,在这一课你你将学会怎样建模,简单吧,你能模拟更多。 41.体积雾 把雾坐标绑定到顶点,你可以在雾中漫游,体验一下吧。 42.多重视口 画中画效果,很酷吧。使用视口它变得很简单,但渲染四次可会大大降低你显示速度哦) 43.在OpenGL中使用FreeType库 使用FreeType库可以创建非常好看反走样字体,记住暴雪公司就是使用这个库,就是那个做魔兽世界。尝试一下吧,我只告诉你了基本使用方式,你可以走更远。 44.3D 光晕 当镜头对准太阳时候就会出现这种效果,模拟它非常简单,一点数学和纹理贴图就够了。好好看看吧。 45.顶点缓存 你想更快地绘制么?直接操作显卡吧,这可是前沿图形技术,不要犹豫,我带你入门。接下来,你自己前走吧。 46.全屏反走样 当今显卡强大功能,你几乎什么都不用做,只需要在创建窗口时候该一个数据。看看吧,驱动程序为你做完了一切。 47.CG 顶点脚本 nVidioGPUC语言,如果你相信它就好好学学吧,同样这里也只是个入门。记住,类似语言还有微软HLSL,OpenGLGLSL,ATIshaderMonker。不要选错哦:) 48.轨迹球实现鼠标旋转 使用鼠标旋转物体,很简单也有很多实现方法,这里我们教会你模拟轨迹球来实现它.
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值