OpenGL ES 11--单纹理,多视图,纹理渲染,以及数学灵感.docVIP

OpenGL ES 11--单纹理,多视图,纹理渲染,以及数学灵感.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL ES 11—单纹理,多视图,纹理渲染,以及数学灵感 我在高中的最后一年,我正在做一个先进的数学题目,是因为有趣,看着油漆干燥。有不少次我都没有谈到,因为我的那些先进的教学理念在课堂的环境根本没有激励我。 有一天,我继续坐在教室的后面发呆,突然我发现白板上的这样一行: [ a b c ] . [ d e f ] 我坐在笔直。我知道这是矩阵数学,这是我一直暴露在阅读有关图形程序,但我还没有完全理解。嗯,我有兴趣再次,鼓舞注意,甚至喜欢自己。 兴趣是一个有趣的事情。我提到这一点,因为无论我如何努力,我不能完全获得该教程混合权利。所以,我刚刚张贴,并决定回来后,我所有的“灵感” 。 现实将是我永远也不会得到启发寻找在立方体和金字塔,试图处理日益复杂的OpenGL ES的概念。其上市时间开始(缓慢)增加的复杂性场面在我们正在尝试英寸这样,灵感不应枯竭。 增加了现场的复杂性将沿着放缓,但我们不能作出任何巨大的跳跃在任何时间,以免造成人民后面。但是,增加的复杂性,我们将和您的结果将学习现场管理,以及在OpenGL ES的概念。 今 天的教程将刚才我们在隧道。但是,在我们达到现场,我们有一些其他位做家务。首先,我们需要支付最后一次专题载入纹理中的iPhone ,但直到去年我离开,因为它是最重要的(阅读:我忘记了它) 。然后我们要引起我们的隧道使用4种不同的材质,但加载从一个单一的纹理文件。最后,我们会做一些基本呈现的纹理,触摸基地再次与融合。 iPhone’s Y != OpenGL’s Y OpenGL’s Y不适合很多的平台,包括iPhone的。所以当我们使用渲染的时候,y是从上往下的。 为了解决这个问题,不要调用 glRotatef() ,虽然它可以解决这个问题,但是会浪费CPU/GPU的时间。 这是仅于的解决办法。 1. 改变纹理之前捆绑在一个图像编辑器,以便在加载的正确方式。这一工程,但有可能减少跨平台的兼容性。还需要更多的工作。我不会做这件事。 2.改变纹理的坐标数组为右坐标。也就是说,左下角将是(0,1).OpenGL并不关系你的纹理数据,它只需要知道每个顶点对应的纹理坐标就可以了。 3.改变 loadTexture[] 函数,当它加载图片的时候自行翻转。但是这样一来,你每次加载图片都要浪费时间。并且增加CPU/GPU的消耗。 “最佳方案”是使用第3点。 我将改变 loadTexture[] 函数。在本教程里,一切还很好,还没有OpenGL不能做的事。 唯一的改变事修改下面的函数。 CGContextRef textureContext = CGBitmapContextCreate(textureData, texWidth, texHeight, 8, texWidth * 4, CGImageGetColorSpace(textureImage), kCGImageAlphaPremultipliedLast); // Rotate the image -- These two lines are new CGContextTranslateCTM(textureContext, 0, texHeight); CGContextScaleCTM(textureContext, 1.0, -1.0); 这为我们的图像指定了正确的方向。 从单个纹理中出来的多个纹理 做为今天的乐趣,我们将使用单一的纹理来生成4个纹理对象:两个墙的纹理,地板的纹理和天花板的纹理。 在 上个教程里,我们为立方体的每个面都加载了一个纹理。我们每一次加载纹理并传送给OpenGL,它都会在OpenGL的控制空间里增加一个副本。因此,我 们可以使用free()去释放内存,在loadTexture里使用malloc()为纹理图片开启内存。显然,我们每次改变纹理都需要时间,每次使用新 的纹理都要通知OpenGL绑定新的纹理。 这个方法给了你一些变革,但它不是真正的性能。虽然是一个方便的技巧,我只是想告诉你可以使用纹理的一个部分。 第一件事就是创建一个空白的图片,大小是512*512,足够放下4张256*256的图片。然后我们复制每个图片到这个大图片里,保存为png文件。 至少有些工作你可

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档