摘要: 今天的主题是我一度谈之色变的。概念上讲,它是3D编程中最为困难的部分。首 先,你应该理解 3D 几何和笛卡尔坐标系他。你还应该理解由顶点构成的三角形组成的OpenGL虚拟世界的物体,各顶点定义了三维空间的特定点,你还应理解怎样使用这些信息在 iPhone上使用OpenGL ES进行绘制。如果你不理解这些概念,我建议你回头再看看我的前六篇文章。为在交互式程序如游戏中使用这些虚拟世界中的物体,必须要有一种方法来改变物体间的相对位置以及物体与观察者之间的相对位置。要有一种方法不但可以移动,而且可以旋转和改变物体的大小。还必须要有一种方法将虚拟的三维坐标转换成电脑屏幕的二维坐标。所有这些都是通过所谓变 阅读全文
posted @ 2013-03-15 17:21 GIS_小强 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 在OpenGL ES中另一种为多边形定义颜色创建材质的方法是将纹理映射到多边形。这是一种很实用的方法,它可以产生很漂亮的外观并节省大量的处理器时间。比如说,你想在游戏中造一个砖墙。你当然可以创建一个具有几千个顶点的复杂物体来定义每块砖以及砖之间的泥灰。或者你可以创建一个由两个三角形构成的方块(四个顶点),然后将砖的照片映射上去。简单的几何体通过纹理映射的方法比使用材质的复杂几何体的渲染快得多。功能启动为使用纹理,我们需要打开OpenGL的一些开关以启动我们需要的一些功能:glEnable(GL_TEXTURE_2D);glEnable(GL_BLEND);glBlendFunc(GL_ONE, 阅读全文
posted @ 2013-03-15 17:19 GIS_小强 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章,我们讨论了光效的设定以及光效的各种属性。我们还讨论了光的三要素:散射光,环境光和高光。如果你还不是完全清楚,那么我们来复习一下,在定义材质时大量的用到这些要素。作为本文的起点,我们使用了原文中球体绘制的项目文件。我们不再使用二十面体而是转向球体是因为球体是展示光和材质不同要素之间相互作用的最佳形状。颜色是什么这可能是对小学美术课的复习。为什么现实世界会有颜色?是什么造成的?我们看得见的光被称为光的可见频谱。根据不同的波长我们可以感知到不同的颜色。在可见光谱的一端是低波长高频率的紫色和蓝色,而在另一端是低频高波长的橘色和红色:电磁波在这个范围之外,因此不是“可见光”,尽管这只是人工 阅读全文
posted @ 2013-03-15 17:17 GIS_小强 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 继续我们的iPhone OpenGL ES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可以看见东西。 它只是提供一种十分单调的整体光让我们看到物体。但是如果不定义光效,物体看上去都很单调,就像你在第二部分程序中看到的那样。阴影模型(Shade Model)在深入讨论OpenGL ES是怎样处理光线之前,重要的是要了解OpenGL ES实际上定义了两种shade model,GL_FLAT和GL_SMOOTH。我们将不会讨论GL_FLAT,因为这只会让你的程序看上去来自九十年代:GL_FLAT方式渲染的一个二十面体。15年前的实时渲染技术从发 阅读全文
posted @ 2013-03-15 17:15 GIS_小强 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 现在你已经知道OpenGL是怎样绘图的了,让我们回头谈谈一个很重要的概念:OpenGL视口(viewport)。 许多人对3D编程还很陌生,那些使用过像Maya, Blender, 或 Lightwave之类3D图形程序的人都试图在OpenGL虚拟世界中找到“摄像机”。但OpenGL并不存在这样的东西。它所有的是在3D空间中定义 可见的物体。虚拟世界是没有边界的,但计算机不可能处理无限的空间,所以OpenGL需要我们定义一个可以被观察者看到的空间。如 果我们从大部分3D程序具有的摄像机对象的角度出发来考虑,视口端点的中心就是摄像机。也就是观察者站的位置。它是一个观察虚拟世界的虚拟窗口。观察者可 阅读全文
posted @ 2013-03-15 17:13 GIS_小强 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 还有许多理论知识需要讨论,但与其花许多时间在复杂的数学公式或难以理解的概念上,还不如让我们开始熟悉OpenGL ES的基本绘图功能。请下载OpenGL Xcode项目模板。我们使用此模板而不是Apple提供的模板。你可以解压到下面目录来安装它:/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application/此模板用于全屏OpenGL程序,它具有一个OpenGL视图以及相应的视图控制器。 大部分时候你不需要动到此视图。此视图用于处理一些诸如缓存切换之类的事物,但在两处调用了其 阅读全文
posted @ 2013-03-15 17:11 GIS_小强 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 我曾写过一些文章介绍iPhone OpenGL ES编程,但大部分针对的是已经至少懂得一些3D编程知识的人。作为起点,请下载我的OpenGL Xcode项目模板,而不要使用Apple提供的模板。你可以解压到下面位置安装此模板:/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application/已经有大量有关OpenGL的好教程和书籍。但是,却没有多少是关于OpenGL ES,而且没有(至少在我撰写此文时)是专门针对学习iPhone上3D编程的。因为大部分有关学习OpenGL的材 阅读全文
posted @ 2013-03-15 17:09 GIS_小强 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 将自己的类封成库供别人调用,非常方便,就行xcode中的许多类库一样。那么如何制作自己的类库呢?本人在网上看过很多童鞋的文章,都没有试成功,最后在同事的帮助下搞定。今天有点空闲时间,赶紧记下来,一是跟大家分享,二是怕忘了,今天有同事问我,都感觉有点生了,所以有了这篇文章。下面教大家一步步制作framework1、新建一个项目选择Framwork&Library中的Cocoa Touch Static Library。如图2、命名项目名称3、加载自己要封装的东西4、加载自己的代码5、选择设备和模拟器两种方式,编译生成libhello_world.a文件6、查看是否生成两个文件7、选择Fi 阅读全文
posted @ 2013-03-08 15:43 GIS_小强 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 发布测试的最后一步打包(Archive),Xcode4帮助文档有比较详细介绍,但是居然是错的,这里说明一下。1、设置“Build Settings”,下图是官方文档截图,留意那个红框,居然说反了。"Skipinstall"一定要选NO,否则在下面的打包步骤后,Organizer看不到你的程序,就为这折腾我好些时间,国外论坛一堆问题,说我按照官方文档做了,怎么Organizer看不到程序。1.1 选择ad hoc证书.在“CodeSigning”栏,选择你在文章(“iOS程序发布测试3-生成adhoc证书”)生成的发布证书(adhoc),如下图,这里要选择“iPhone Di 阅读全文
posted @ 2013-03-06 21:06 GIS_小强 阅读(224) 评论(0) 推荐(0) 编辑
摘要: iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的;1种是发布证书,发布证书又分发布到app store的(这里不提及)和发布测试的ad hoc证书。 那ad hoc证书和开发证书区别在哪里?如果你的tester(团队测试人员、客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序“灌”进去,那有开发证书就够了,不需要ad hoc证书。 如果tester的iOS设备不能直接让你灌程序,那怎么办?你必须打包(Archive)你的程序,然后发给你的tester,让他通过itunes进行安装,那就需要ad hoc证书了。 具体的区别,我们先看看ad hoc证书生 阅读全文
posted @ 2013-03-06 21:05 GIS_小强 阅读(204) 评论(0) 推荐(0) 编辑