NeHe tutorial 课程列表

来源:互联网 发布:imap4 端口 编辑:程序博客网 时间:2024/05/15 14:03

Lesson01 设置一个OpenGL窗口

在本教程中,我将教你如何设置,并在Windows环境下使用OpenGL。您在本教程中创建的程序将显示一个空的OpenGL窗口,将计算机切换到全屏或窗口模式,然后等待您按ESC或关闭窗口退出。这听起来不是很多,但是这个程序将是我在接下来发布的每一个其他教程的框架。了解OpenGL的工作原理,创建OpenGL窗口以及编写简单易懂的代码非常重要。您可以在本教程结尾处下载代码,但是我绝对建议您在开始使用OpenGL编程之前至少阅读一遍教程。

Lesson02 第一个多边形

使用第一个教程中的源代码,我们现在将添加代码以在屏幕上创建一个三角形和一个方形。我知道你可能正在想自己“三角形和方形……哦,快乐”,但它确实是一个大交易。几乎所有在OpenGL中创建的内容都将由三角形和正方形创建。如果你不懂如何在三维空间创建一个简单的小三角形,那么你将会完全迷失在路上。所以阅读本章并学习。
读完本章后,您应该了解X轴,Y轴和Z轴。您将了解左右,上下,左右翻译进出屏幕。您应该了解如何将对象放置在屏幕上的位置。您还将学习一些关于深度缓冲(将对象放置在屏幕中)。

Lesson03 添加颜色

扩展第二个教程,我将教你如何用很少的努力在OpenGL中创建壮观的颜色。您将了解平面着色和平滑着色。左边的三角形使用平滑的着色。右边的广场使用平面着色。注意三角形上的颜色如何混合在一起。
颜色增加了许多OpenGL项目。通过理解平坦和平滑的着色,可以大大提高OpenGL演示的外观。

Lesson04 翻转变换

向右移动。在本教程中,我将教你如何旋转三角形和四边形。三角形将在Y轴上旋转,而四边形将在X轴上旋转。本教程将介绍2个变量。rtri用于存储三角形的角度,rquad将存储四边形的角度。
创建由多边形组成的场景很容易。将动作添加到这些对象使得场景生动起来。在稍后的课程中,我将教你如何围绕屏幕上的一个点旋转一个对象,导致对象在屏幕上移动,而不是旋转在屏幕上。

Lesson05 3D形状

现在我们已经设置了多边形,四边形,颜色和旋转,现在是构建3D对象的时候了。我们将使用多边形和四边形构建对象。这一次,我们将在最后一个教程中进行扩展,并将三角形变成一个丰富多彩的金字塔,然后将方块变成一个立方体。金字塔将使用混合的颜色,立方体将为每个面具有不同的颜色。
在3D中构建对象可能非常耗时,但结果通常是值得的。你的想象力是极限!

Lesson06 纹理映射

你问它,所以这里是…纹理映射!在本教程中,我将教您如何将位图图像映射到立方体的六面。我们将使用第一课的GL代码来创建这个项目。从一个空的GL窗口开始比修改上一个教程更容易。你会发现第一课的代码对于快速开发项目是非常有价值的。第一课中的代码为你设置了一切,你所要做的就是专注于编程效果。
第06课更新
第06课更新

本更新解释了如何使用SOIL库而不是glaux来加载纹理,以便与所有新的IDE兼容。结合原版第06课教程阅读此内容!

Lesson07 纹理过滤器,光照和键盘控制

好的,我希望你到现在为止已经了解了一切,因为这是一个巨大的教程。我将试图教你两种新的方法来过滤你的纹理,简单的灯光,键盘控制,或许更多:)如果你对本课学到的东西没有信心,那就回去复习。在其他课程中玩弄代码。别急着 最好花一点时间,好好地学习每一课,而不是跳进去,只有足够的知识才能完成任务。

Lesson08 混合

有一个等待的理由。来自这个完全酷的网站Hypercosm的程序员问他是否可以写一个关于混合的教程。无论如何,第八课将是一个混合教程。所以时机是完美的!本教程将扩展第七课。混合是一个非常酷的效果…我希望你们都喜欢这个教程。本教程的作者是Tom Stanis。他在教程中付出了很多努力,所以让他知道你的想法。混合并不是一个容易的话题。

Lesson09 在3D空间的移动位图

本教程涵盖了你们要求的一些主题。你想知道如何在3D中移动屏幕上的物体。您想知道如何在屏幕上绘制位图,而图像的黑色部分不会遮挡背后的图像。你想要简单的动画和更多的用途混合。本教程将教你所有这一切。你会注意到没有纺纱箱。以前的课程介绍了OpenGL的基础知识。每个教程都在最后展开。本教程是迄今为止学到的所有内容的组合,以及如何以3D形式移动对象的信息。本教程稍微先进一些,因此在跳到本教程之前,请确保您了解以前的课程。

Lesson10 在中3D环境中加载和移动:

你一直在等待的教程!本教程由一位名叫Lionel Brits的程序员创建。在本课中,您将学习如何从数据文件中加载3D世界,并在3D世界中移动。代码是使用第一课代码制作的,但是,教程网页仅解释用于加载3D场景的新代码,并在3D世界中移动。下载VC ++代码,并在阅读本教程时遵循它。试试的关键是[B]借出,[F]过滤,[L](光线不随场景移动)和Page Up / Down。我希望你能享受Lionel对这个网站的贡献。当我有时间时,我会让教程更容易遵循。

Lesson11截图

国旗效果(挥舞纹理)##

本教程代码由Bosco提供给您。同样的人创造了完全酷的迷你演示称为毫无价值。他喜欢每个人对他演示的反应,并决定更进一步,并解释他在演示结束时如何做到这一点。本教程以第6课的代码为基础。本教程结束时,您应该可以折叠折叠和操作自己的纹理。这绝对是一个很好的效果,而且比平面不动的纹理更好。如果你喜欢这个教程,请发邮件给bosco,让他知道。

Lesson12 显示列表

想知道如何加快你的OpenGL程序?每次你想在屏幕上放置一个对象,厌倦了写很多代码?如果是这样,这个教程是绝对适合你的。学习如何使用OpenGL显示列表。预构建对象并使用一行代码在屏幕上显示它们。通过在程序中使用预编译的对象加快程序的速度。停止写一遍又一遍的相同的代码。让显示列表为你做所有的工作!在本教程中,我们将使用显示列表,使用几行代码构建Q-Bert金字塔。

Lesson13 位图字体

我认为我在电子邮件中经常被问到的问题是“如何使用OpenGL在屏幕上显示文本?”。你总是可以将地图文本纹理到屏幕上。当然你对文本的控制很少,除非你擅长混合,否则文本通常会与屏幕上的图像混合在一起。如果你想用简单的方法在屏幕上以任何你想要的颜色写出你想要的文本,使用任何内置字体的计算机,那么这个教程对你来说是绝对的。位图字体是2D可缩放字体,不能旋转。他们总是面向前进。

Lesson14 大纲字体

位图字体不够好?你需要控制字体在Z轴上的位置吗?你需要3D字体(真正深度的字体)?你需要线框字体吗?如果是这样,轮廓字体是完美的解决方案。您可以沿着Z轴移动它们,然后调整它们的大小。你可以在一个轴上旋转它们(你不能用位图字体做的事情),并且由于每个字符都产生了正确的法线,所以它们可以被照亮。您可以使用计算机上安装的任何字体来构建轮廓字体。绝对是一个很好的字体在游戏和演示中使用。

Lesson15 纹理映射的轮廓字体

希望我的最后一个字体教程{grin}。这一次,我们学习了一个快速和相当不错的方式来纹理地图字体,以及屏幕上的任何其他3D对象。通过玩弄代码,你可以创建一些非常酷的特效,从正常纹理映射对象到球体映射对象。如果你不知道…球体映射创建一个金属外观的对象,反映了从图案到图片的任何东西。

Lesson16 看起来很酷的雾

本教程代码由Chris Aliotta慷慨地捐赠给了网站。它基于第7课的代码,为什么你再次看到着名的箱子:)这是一个很短的教程,旨在教你雾的艺术。您将学习如何使用3种不同的雾过滤器,如何改变雾的颜色,以及如何设置雾开始到屏幕的距离以及屏幕结束的距离。绝对是一个很好的效果知道!

Lesson17 2D纹理字体

本教程代码的原始版本由Giuseppe D’Agata编写。在本教程中,您将学习如何使用纹理映射四边形将任何字符或短语写入屏幕。您将学习如何从256x256纹理贴图中读取256个不同的字符之一,最后我会告诉您如何使用像素而不是单位将每个字符放在屏幕上。即使您不希望将2D纹理映射的字符绘制到屏幕上,也可以从本教程中学到很多东西。绝对值得一读!

Lesson18 二次曲面

本教程代码是由GB Schmick在TipTup上撰写的精彩网站。它将向您介绍这个奇妙的世界。使用quadrics,您可以轻松创建复杂的对象,如球体,圆盘,圆柱体和圆锥体。这些对象可以用一行代码创建。用一些奇特的数学和规划,应该可以将这些物体从一个物体变形到另一个物体。请让GB Schmick知道您对教程的看法,访问者为网站做贡献总是很好,这对我们所有人都有好处。每个人都贡献了一个教程或项目值得信任,请让他们知道他们的工作表示赞赏!

Lesson19 使用三角形条纹的粒子引擎

你有没有想过要在OpenGL程序中创建一个爆炸,喷泉,燃烧的星星,或者其他一些很酷的效果,但是编写一个粒子引擎要么太困难,要么太复杂?如果是这样,这个教程是给你的。你将学习如何编写一个简单但漂亮的粒子引擎。我已经投入了一些彩虹模式,以及大量的键盘互动。您还将学习如何创建OpenGL三角形条。我希望你找到有用和有趣的代码。

Lesson20 掩蔽

到目前为止,我们已经将我们的图像混合到屏幕上了。虽然这是有效的,并且增加了我们的形象,但是透明的对象并不总是漂亮的。比方说,你正在做一个游戏,你想要坚实的文字,或一个奇形怪状的控制台弹出。随着我们一直使用的混合,现场将照亮我们的对象。通过结合一些花哨的混合与图像蒙版,你的文字可以是坚实的。你也可以把奇怪形状的图像放在屏幕上。一棵树坚实的树枝,不透明的树叶或窗户,透明的玻璃和坚实的框架。很多的可能性!
第二十一至二十五课

Lesson21 线,抗锯齿,时机,正交视图和简单的声音

这是我的第一个大教程。在本教程中,您将学习:线条,反锯齿,正投影,定时,基本音效和简单游戏逻辑。希望在本教程中有足够的内容让所有人都高兴:)我花了2天编写本教程,大约2周编写这个HTML文件。如果你曾经玩过Amidar,那么你在本教程中写的游戏可能会带来回忆。你必须填写一个网格,同时避免讨厌的敌人。一个特殊的项目不时出现,使生活更轻松。学习很多,玩得开心!

Lesson22 凹凸贴图,多纹理和扩展

本教程代码由Jens Schneider编写。一开始我想指出,这是一个高级教程。如果您仍然不确定基础知识,请返回阅读前面的课程。如果你是一个新的GL程序员,这个课程可能会有点多。在本课中,您将修改第6课中的代码,以支持支持它的卡上的硬件多纹理,以及称为凹凸映射的非常酷的视觉效果。请让Jens Schneider知道您对教程的看法,访问者对网站的贡献总是很好,这对我们所有人都有好处。每个人都贡献了一个教程或项目值得信任,请让他们知道他们的工作表示赞赏!

Lesson23 在OpenGL中的球体映射的Quadrics

本教程代码由GB Schmick编写,基于他的二维教程(第18课)。在第15课(纹理映射的字体)中,我谈了一些关于球体映射的内容。我解释了如何自动生成纹理坐标,以及如何设置球体贴图,但是因为第15课很简单,所以我决定保持教程简单,在球体贴图方面留下了很多细节。既然课程更先进一点,现在是时候进入球体映射的世界了。TipTup在教程上做得非常出色,所以如果你欣赏他的作品,让他知道!

Lesson24 标记,扩展,剪刀测试和TGA加载

在本教程中,我将教你如何阅读和解析视频卡支持的OpenGL扩展。我也会告诉你如何使用剪刀测试来创建一个很酷的滚动窗口效果。最重要的是,我将向您展示如何在您自己的项目中加载和使用TGA(targa)图像文件作为纹理。TGA文件支持alpha通道,可以创建一些很好的混合效果,而且易于创建和使用。不仅如此,通过使用TGA文件,我们不再依赖于glAUX库。我相信很多你们会感激的东西!

Lesson25 从文件变形和加载对象

本教程代码由Piotr Cieslak编写。学习如何从文本文件加载简单的对象,并从一个对象到另一个对象的平滑变形。在这个教程中的效果必须被看作是赞赏。在这个演示中教导的效果可以用于类似于海豚演示中的游泳海豚的动画物体,或者将物体扭曲和弯曲成许多不同的形状。您也可以修改代码以使用线条或实心多边形。很好的效果!希望你能感谢Piotr的工作!

Lesson26 使用模板缓冲区的剪辑和思考

本教程由Banu Cosmin编写。它演示了如何使用模板缓冲区,裁剪和多纹理来创建非常逼真的反射。本教程比以前的课程更加先进,所以请确保在跳入之前阅读过以前的课程。同样重要的是要注意,本教程不能在不支持模板缓冲的视频卡上运行(voodoo 1,2,也许更多)。如果你赞赏巴努的工作,让他知道!

Lesson27 阴影

这是一个高级教程。在决定尝试阴影之前,请确保完全理解基本代码,并确保熟悉模板缓冲区。本教程由Banu Cosmin&Brett Porter提供。巴努写了原始的代码。Brett清理了代码,将它合并成一个文件,并为本教程编写了HTML。效果是惊人的!实际环绕物体的阴影,并在墙壁和地板上扭曲。感谢Banu和Brett的辛勤工作,这真是一个很好的教程!

Lesson28 贝塞尔补丁/全屏修复

David Nikdel是这个超酷教程背后的人物。了解如何创建贝塞尔补丁。了解如何通过修改控制点来改变曲面。被改变的表面是完全纹理映射的,动画是光滑的!向上和向下箭头升高和降低分辨率时,向左和向右箭头键旋转对象。本教程还消除了您几个人的全屏问题!感谢David修改代码!如果你欣赏他的作品,让他知道!

Lesson29 Blitter功能,RAW纹理加载

本教程由AndreasLöffler编写。在本教程中,您将学习如何加载.RAW图像文件。您还将学习如何编写自己的阻击器例程,以便在加载后修改纹理。您可以将第一个纹理的部分复制到第二个纹理中,可以将纹理混合在一起,然后可以拉伸纹理。相同的程序可以修改,以创建实时等离子和其他酷效果!如果你喜欢这个教程,让安德烈亚斯知道!

Lesson30 碰撞检测

你一直在等待的教程。这个惊人的教程是由Dimitrios Christopoulos写的。在本教程中,您将学习碰撞检测,碰撞响应以及基于物理的建模效果的基础知识。虽然所有重要的代码都被解释了,本教程将更多地集中在碰撞检测如何工作而不是实际的代码上。重要的是要注意,这是一个高级教程。不要指望通读教程一次,了解碰撞检测的一切。这是一个复杂的话题,本教程只会让你开始。

Lesson31 模型加载

Brett Porter是本教程的作者。我能说什么…另一个令人难以置信的教程!本教程将教你如何加载和显示纹理映射的Milkshape3D模型。本教程相当先进,因此在您尝试本教程中的代码之前,请确保您了解以前的课程。这听起来好像布雷特正在计划骨骼动画的未来教程,所以如果你喜欢这个教程,向他展示你的支持!给他发电子邮件,让他知道你欣赏他的工作!

Lesson32 拾取,Alpha混合,Alpha测试,排序:

本教程试图回答我每天被问到的一些问题。你想知道如何判断你是否用鼠标点击了一个对象(拾取)。您想知道如何在没有特定颜色显示(alpha混合或alpha测试)的情况下将对象绘制到屏幕上。您想知道如何对对象进行排序,以便在启用(排序)中进行混合时正确显示。本教程是一个完整的游戏,被认为是先进的。在跳入代码之前,确保你有一个很好的OpenGL的未知。

Lesson33 加载压缩和未压缩的TGA

在第25课中,我向您展示了一种快速加载未压缩的24/32位TGA图像的方法。非常有用,如果你需要使用一个alpha通道,你不介意一个非压缩TGA的大尺寸!在本教程中,您将学习如何加载未压缩的和RLE压缩的TGA图像。TGA加载代码和头文件与主工程是分离的,并且可以很容易地用在你自己的项目中!演示仅作为一个例子!不要指望眼睛爆裂的图形!

Lesson34 美丽的风景通过高度映射的手段

想要创造美丽的风景平滑的阴影景观使用无非是一个单一的纹理?如果是这样,本教程将教你如何将二维灰度高度地图图像转换成一个完整的3D景观。我还谈了一些关于gluLookAt的命令,这个命令似乎让你感到困惑。本教程的代码由Ben Humphrey编写。如果你喜欢这个教程或只是代码,请让Ben知道!如果你想看到更多的教训,支持那些捐赠代码的网站。你的工作很少,对作者来说意义非凡。

Lesson35 在OpenGL中播放AVI文件

本教程将教你如何在OpenGL中播放AVI文件。全屏播放,在一个窗口,立方体,球体,圆柱等侧面创建一个广告牌上播放全动态视频!本教程还向您展示了如何使用球体映射创建一个很酷的实时环境映射效果。感谢Fredster的AVI动画,Maxwell Sayles的编码建议,以及Jonathan Nix和John F. McGowan博士。为他们伟大的AVI文章/文件。玩这个教程,如果你在教程中发现错误,请告诉我!
Lesson36截图
辐射迷离&翻译到纹理

本教程由Dario Corno(也称为SpinningKids的rIO)编写。代码/ html的评论和教程的重写是由我(NeHe)完成的。本教程将向您展示如何创建令人印象深刻的径向模糊效果。它应该在几乎所有类型的硬件上运行,并且不需要使用扩展。本教程还将教您如何使用屏幕外缓冲区渲染纹理。我相信你们中许多人都感兴趣的话题!GL指令很少有解释,这一点很重要。现在你应该知道他们做了什么!如果您在本教程中发现任何错误,请告诉我!

Lesson37 CEL-底纹

本教程由Sami“MENTAL”Hamlaoui编写。Orignally这个代码在GameDev.net上发布为一篇文章。文章发表后,萨米人充满了有兴趣获得源代码的人的要求。Sami一起使用NeHeGL基本代码攻击了一些代码,写了一个粗略的.TXT格式的教程,并通过电子邮件将整个程序包发送给我。所有NeHe Productions访客的好消息!本教程将教你Cel-Shading。一个非常酷的效果,使图像看起来像漫画!如果你喜欢这个教程给作者发电子邮件,让他知道!

Lesson38 从资源文件和纹理三角形加载纹理

我为所有那些给我发邮件的人写了这个教程,问“如何从资源文件加载纹理,以便所有的纹理都存储在.exe文件中?” 对那些说过“我知道如何纹理绘制一个四边形但是如何在纹理上映射一个三角形?”的人们来说。教程本身并不是那么奇特,它绝对不是那么先进,但内容是很好的知道。如果没有别的,你将学习如何隐藏你珍贵的纹理。让新手很难偷他们:)

Lesson39 物理模拟简介

本教程由Erkin Tunca编写。它展示了重力下的运动,等速的质量和与弹簧相连的质量。一个很好的介绍物理模拟在你自己的项目。该代码基于最新的NeHeGL代码和第14课的位图字体代码。它具有键盘交互和繁重的评论功能。如果你喜欢这个教程给作者发电子邮件,让他知道。第二个更先进的物理模拟啧啧已经在作品中了!

Lesson40 绳索物理

本教程由Erkin Tunca编写,是他的两部分物理仿真系列的第二部分。用键盘上的按键控制绳子。看着绳子摇摆,拖尾拖着地面。一个非常酷的效果!该代码基于最新的NeHeGL代码,并具有键盘互动和重要评论。如果你喜欢这个教程给作者发电子邮件,让他知道。他做了一个出色的工作,并且在第一个几周之后就发布了。

Lesson41 体积雾和IPicture图像加载

本教程将向您介绍扩展的世界。在本教程中,您将学习如何使用glFogCoordf扩展创建Volumetric Fog。您还将学习IPicture代码如何工作,以及如何在您自己的项目中使用它。由于空闲时间非常有限,演示并不是那么复杂。这个演示中唯一使用的键是向上和向下箭头键。此演示中显示的唯一效果是体积雾。记住这一点,雾的效果是非常酷,教程是非常详细的。阅读本教程后,您应该没有问题添加体积雾到你自己的演示。请注意,本教程仅在支持EXT_fog_coord扩展的视频卡上运行。如果您不确定您是否在意支持此扩展程序,下载第24课并滚动浏览受支持的扩展列表。希望有人会发现这个代码有用!

Lesson42 多个视口

本教程适用于所有通过电子邮件发送给我的人,希望知道如何在单个屏幕上显示多个视图。本教程将向您介绍如何设置多个视口,如何在同一个屏幕上显示正视图和透视图,以及如何在自己的视口中运行各种效果时显示各种效果。作为一个额外的好处,您将学习如何获得OpenGL窗口的大小,您将学习更新纹理而不重建纹理的快速方法。您将学习如何使用GL_COLOR_MATERIAL为纹理着色,并且您将玩弄我的迷宫代码:)我希望您能感激我制作本教程的时间。这是一个简单的想法,但编写教程,然后HTML非常耗时!

Lesson43 OpenGL中的FreeType字体

最近有很多人写信给我,询问如何创建一个反锯齿字体。放大时,位图字体通常是块状的,轮廓字体会占用太多的CPU。感谢Sven Olsen,您现在可以使用FreeType库创建非常漂亮的字体。通过使用FreeType库,您可以创建反锯齿文本。该文本很容易旋转,并与OpenGL的挑选功能很好地工作。示例程序基于第13课,并使用旧的NeHe基本代码。这个例子并不是那么奇特,但是在运行之后,你会看到旧的WGL位图字体和新的FreeType字体有明显的区别!如果你喜欢这个教程,请发邮件给作者,让他知道!

Lesson44 3D闭塞测试的镜头光晕

通过扩展glCamera类学习如何做透镜耀斑。如果你看看镜头光晕,你会注意到它们都有一个共同点。他们似乎都在屏幕的中心移动。考虑到这一点,你可以实际上只是抛出z坐标,使你的耀斑全2D。这种方法唯一的问题是没有z坐标,你怎么知道照相机是否在看光源?在本教程中,我们将制作3D镜头闪光灯,以便为数学计算做好准备。Spinning Kids的Dario Corno aka rIO的咬合测试。

Lesson45 顶点缓冲区对象

当您需要原始的多边形推送力时,您可以始终使用OpenGL提供的优化。顶点阵列是一个很好的方法来做到这一点。为了获得更大的提升,可以使用最近扩展名为“顶点缓冲区对象”的图形卡。扩展名ARB_vertex_buffer_object的作用与顶点数组一样,只是它将数据加载到显卡的高性能内存中,大大降低了渲染时间。由于扩展是相对较新的,并不是所有的卡都支持它。这个令人敬畏的教程是由Paul Frazee编写的。如果你喜欢这个教程,请给他发电子邮件,让他知道。

Lesson46 全屏反锯齿

需要一个教程,使您的OpenGL应用程序看起来更好?我们都碰到的一个大问题是别名。也就是说,存在于对角线上的正方形“锯齿”与屏幕上存在的正方形像素相关。在本教程中,您将使用“抗锯齿”来涂抹这些“锯齿”,以便为对象创建更平滑的边缘。我们通过“多重采样”来实现这一点。全屏反锯齿(AntiAliasing)是非实时渲染程序总是有优势的东西。然而,使用当前的硬件,我们能够实时地实现相同的效果。ARB_MULTISAMPLE扩展允许我们这样做。像任何其他基于扩展的教程一样,如果您的卡不支持使用的扩展名,效果将无法在您的机器上运行,否则程序可能无法运行。本教程由Colt“MainRoach”McAnlis编写。如果你喜欢,让他知道!

Lesson47 CG顶点着色器

使用顶点和片段(或像素)着色器来做一些渲染肮脏的工作可以有很多好处。最明显的是一些与CPU相关的图形相关CPU和GPU上的移动。Cg为编写非常强大的着色器提供了一个(合理的)简单的语言。本教程有多个目标。首先是展示一个简单的顶点着色器,它实际上做了一些事情,而没有引入不必要的光照等。第二个是提供使用OpenGL运行顶点着色器的可见结果的基本机制。因此,这是针对初学者有兴趣的Cg谁在OpenGL有一点经验。本教程由Owen Bourne编写。如果你喜欢它,请花时间给他发电子邮件,让他知道!

Lesson48 弧球旋转

只要用鼠标旋转你的模型不是很好吗?用ArcBall你可以做到这一点。在本教程中,Terence J. Grant将介绍将ArcBall旋转添加到自己的项目中的实现和注意事项。他的ArcBall课程的实施基于布雷顿·韦德(Bretton Wade),该书是基于Graphic Gems系列书籍的Ken Shoemake的。但是,他的版本有一些错误修复和优化。示例代码最初是基于第5课的。它已经被细化了一下,现在包含渲染一个圆环的代码,完成了法线。如果你喜欢这个教程,请发邮件给Terence,让他知道!