版权声明:本文为博主原创文章,未经博主同意不得转载。转载联系 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. 深入SQL SERVER 2000的内存管理机制

    http://www.cnblogs.com/softj/articles/243591.html

  2. lock与monitor的区别

    1.Lock 只能对引用对象加锁 Lock锁定区间内可以对锁定值修改而不发生运行时错误,通常也会采用此种修改方式.这种方式又有点类同于使用Monitor.Wait取得资源,并对这个资源进行操作. 用法 ...

  3. ajax跨域解决办法

    在使用jquery的ajax作请求时,http://127.0.0.1:8080,类似这样的一个本地请求,会产生跨域问题, 解决办法一: jsonp: var url= "http://12 ...

  4. UVA - 10895 Matrix Transpose

    UVA - 10895 Matrix Transpose Time Limit:3000MS   Memory Limit:Unknown   64bit IO Format:%lld & % ...

  5. 【Excle数据透视表】如何移动数据透视表的位置

    数据透视表创建完成了,现在需要将它移动到D5位置,如何移动呢? 解决办法 通过"移动数据透视表"功能实现数据透视表的位置移动 步骤1 单击数据透视表任意单元格→数据透视表工具→分析 ...

  6. Android 进程间通信——AIDL

    代码地址如下:http://www.demodashi.com/demo/12321.html 原文地址:http://blog.csdn.net/vnanyesheshou/article/deta ...

  7. Redis(六):java里常用的redis客户端(Jedis和Redisson)

    Redis的各种语言客户端列表,请参见Redis Client.其中Java客户端在github上start最高的是Jedis和Redisson.Jedis提供了完整Redis命令,而Redisson ...

  8. 一文了解ConfigurationConditon接口

    ConfigurationCondition 接口说明 @Conditional 和 Condition ​ 在了解ConfigurationCondition 接口之前,先通过一个示例来了解一下@C ...

  9. x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*()

    x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*() 帧间预測是指利用视频时间域相关性,使用临近已编码图像像素预測当前图像的像素,以达到有效去除视频时域冗 ...

  10. uboot之run_command简单分析

    本文档简单分析了uboot中命令的实现.run_command函数的实现以及从uboot命令行接收并处理命令的过程. 作者: 彭东林 邮箱: pengdonglin137@163.com http:/ ...