版权声明:本文为博主原创文章,未经博主同意不得转载。转载联系 QQ 30952589。加好友请注明来意。 https://blog.csdn.net/sleks/article/details/28909591

OpenGLES 与 WebGL 中顶点属性的组织格式的误解 - 一个不好笑的笑话

太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载。谢谢合作。

WebGL 中立方体顶点坐标数组:

    vertices = [
// Front face
-3.0, -3.0, 3.0,
3.0, -3.0, 3.0,
3.0, 3.0, 3.0,
-3.0, 3.0, 3.0, // Back face
-3.0, -3.0, -3.0,
-3.0, 3.0, -3.0,
3.0, 3.0, -3.0,
3.0, -3.0, -3.0, // Top face
-3.0, 3.0, -3.0,
-3.0, 3.0, 3.0,
3.0, 3.0, 3.0,
3.0, 3.0, -3.0, // Bottom face
-3.0, -3.0, -3.0,
3.0, -3.0, -3.0,
3.0, -3.0, 3.0,
-3.0, -3.0, 3.0, // Right face
3.0, -3.0, -3.0,
3.0, 3.0, -3.0,
3.0, 3.0, 3.0,
3.0, -3.0, 3.0, // Left face
-3.0, -3.0, -3.0,
-3.0, -3.0, 3.0,
-3.0, 3.0, 3.0,
-3.0, 3.0, -3.0,
];

WebGL 中立方体面顶点坐标索引数组:

    var cubeVertexIndices = [
0, 1, 2, 0, 2, 3, // Front face
4, 5, 6, 4, 6, 7, // Back face
8, 9, 10, 8, 10, 11, // Top face
12, 13, 14, 12, 14, 15, // Bottom face
16, 17, 18, 16, 18, 19, // Right face
20, 21, 22, 20, 22, 23 // Left face
];

iOS 中与上面的区别:

一是顶点坐标数组中有反复的三角形顶点组合;

二是面顶点坐标数组中仅是顶点坐标,未提供该点取纹理像素的坐标,也未提供灯光照耀到该到上时光线反射计算的法线坐标;只是。WebGL 中分别提供了两个与顶点坐标数组相应的数组,分别相应顶点坐标数组中每一个顶点坐标配对的纹理坐标和法线坐标;

茫然一阵后。放下,再捡起来,从稍外一层来看这个问题。

首先,对于使用顶点索引式绘制时,实际绘制是从面顶点索引缓存中来找绘制顺序。而顶点坐标缓存仅仅是一个容器,并不决定顺序;

其次。使用顶点索引缓存的目的。就是避勉反复的顶点坐标存于缓存中,而代以坐标的索引的反复,大幅度减少了对 GPU 内存的占用;

最后,事实上这是一个别人的測试代码,顶点坐标数组之所以那样存储,一是针对不使用索引方式绘制时使用,这叫做复用吗?哈哈,看您怎么理解了,方便呗,至少原作者很的清楚当中的执行机理,所以敢于这样来写,以简化其測试的目的,这也给俺设了个难题。也正由于这个难题。让我深入理解了一些东西。

二是,我好像看到它是用的四个点来表示一个未使用索引方式绘制的面?有木有?俺未做过 OpenGL 的四边形的东东。不太好说。行家们可能看得出来吧。至少不是 OpenGLES 的。这个在我了解的范围人,俺敢肯定!

但,您别忘了。俺了解的范围。俺都不知道多还是少,所以您就别肯定了。还是再咨询下室外高人吧。

笑话讲完了,事实上真的不好笑,只是俺刚明确的时侯。确实大气不出,小气不断地哼了几声,出人意料到是。元芳,你怎么看?有木有!

OpenGLES 与 WebGL 中顶点属性的组织格式的误解 - 一个不好笑的笑话的更多相关文章

  1. 41-ssm中对象查找正确但是没有将数据库中某个属性值赋给对象的一个成员变量

    原因: 变量名虽然与 数据库字段一致,但是 包含下划线,如: a_b,数据库确实也是a_b: 但是ssm开启驼峰命名了,就要将变量名改为   aB , 驼峰命名就可以了.

  2. [WebGL入门]十二,模型数据和顶点属性

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外.鄙人webgl研究还不够深入,一些专业词语.假设翻译有误.欢迎大家指 ...

  3. WebGL中的OpenGL着色器语言

    在webgl中,调用了OpenGL-ES-2.0的API,而在OpenGL-ES专为嵌入式设备设计,其和其它设备一样,都是使用GLSL(GL Shading Language)来编写片段程序并执行于G ...

  4. 【GISER&&Painter】Chapter02:WebGL中的模型视图变换

    上一节我们提到了如何在一张画布上画一个简单几何图形,通过创建画布,获取WebGLRendering上下文,创建一个简单的着色器,然后将一些顶点数据绑定到gl的Buffer中,最后通过绑定buffer数 ...

  5. Spring 配置文件中 元素 属性 说明

    <beans /> 元素 该元素是根元素.<bean /> 元素的属性 default-init // 是否开启懒加载.默认为 false default-dependency ...

  6. webGl中实现clipplane

    webGl中实现clipplane 参考:调用glClipPlane()函数所执行的裁剪是在视觉坐标中完成的,而不是在裁剪坐标中进行的https://blog.csdn.net/shengwenj/a ...

  7. Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题

    Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...

  8. IE9对HTML5中一部分属性不提供支持的原因

    为什么在IE9中对于HTML5标准中的离线应用程序以及CSS3中的一部分不提供支持?笔者间接了解到了这个原因. 微软日前已经发布了Internet Explorer 9(以下简称IE9)正式版.在该版 ...

  9. Opengl_入门学习分享和记录_03_渲染管线(二)再谈顶点着色器以及顶点属性以及属性链接

    ---恢复内容开始--- 写在前面的废话:岂可修!感觉最近好忙啊,本来今天还有同学约我出去玩的.(小声bb) 正文开始:之前已经编译好的着色器中还有一些问题,比如 layout(location=0) ...

随机推荐

  1. Jenkins错误“to depth infinity with ignoreexternals:true”问题解决

    试下以下解决方法: 1.可能是SVN插件版本过低导致,升级SVN插件. 2.可能是构建时自己手动修改了代码,而SVN检出时无法覆盖导致的错误,可以先删除jenkins检出的代码,然后再检出一次去构建. ...

  2. JSONModel解析Dictionary To Model /JSON To Model

    你在把字典转成object的时候还在按下面这样: self.id = [jsonDict objectForKey:@"id"]; self.name = [jsonDict ob ...

  3. [Cocoa]深入浅出Cocoa多线程编程之 block 与 dispatch quene

    深入浅出 Cocoa 多线程编程之 block 与 dispatch quene 罗朝辉(http://www.cppblog.com/kesalin CC 许可,转载请注明出处 block 是 Ap ...

  4. kindeditor编辑器,获取textarea值

    在获取textarea值的时候,从数据库读出来的值都能获取到,但是新输入的值就得不到,只要是新输入的都得不到值 答案: 我昨天刚用kindeditor,我是使用ajaxForm提交表单的在360浏览器 ...

  5. SQL Server数据库连接,Web.config的正确配置 [转]

    http://database.51cto.com/art/201007/213289.htm 此文章主要介绍的是Web.config正确配置SQL Server数据库连接的实际擦步骤,在图5-6中, ...

  6. 【音乐App】—— Vue-music 项目学习笔记:歌曲列表组件开发

    前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 当前歌曲播放列表 添加歌曲 ...

  7. Ethernet帧格式

    一.Ethernet帧格式的发展 1980 DEC,Intel,Xerox制订了Ethernet I的标准 1982 DEC,Intel,Xerox又制订了Ehternet II的标准 1982 IE ...

  8. Mark一下, dp状态转移方程写对,可是写代码都错,poj 1651 poj 1179

    dp题: 1.写状态转移方程; 2.考虑初始化边界,有意义的赋定值.还没计算的赋边界值: 3.怎么写代码自底向上计算最优值 今天做了几个基础dp,所有是dp方程写对可是初始化以及计算写错 先是poj ...

  9. PHP执行linux系统命令

    本文是第一篇,讲述如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL.更新SVN.重启Apache等.第二篇<PHP监控linux服务器负载>:http: ...

  10. csdn开源夏令营-ospaf中期报告

    1.背景         随着将中期的代码托管到CSDN的平台上,ospaf(开源项目成熟度分析工具)已经有了小小的雏形.当然还远远不够.       首先还是要感谢这次活动组织方CSDN,感觉挺有G ...