版权声明:本文为博主原创文章,未经博主同意不得转载。转载联系 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. 【转】java:多网卡环境下获取MAC地址

    http://blog.csdn.net/10km/article/details/78569962 JDK6以后 java.net.NetworkInterface提供了完整的方法用于获取网络设备信 ...

  2. codeigniter 使用

    CodeIgniter系列 记录count和分页 对于某个表的不带条件的count,可以简单的用 $total = $this->db->count_all($table_name) 来获 ...

  3. 数据库资源博客---小麦苗BEST

    http://blog.csdn.net/lihuarongaini/article/details/60584577 http://blog.csdn.net/lihuarongaini/artic ...

  4. mysql二进制安装,升级,多实例部署

    目标 理解线上部署考虑的因素 学会编译安装以及二进制安装mysql 学会升级mysql 学会多实例部署mysql数据库 学会合理部署mysql线上库   考虑因素: 版本选择,5.1,5.5还是5.6 ...

  5. 测试Apache服务器及httpd: Could not reliably determine the server's fully qualified domain name解决办法

    测试Apache服务器: 重启apache: sudo /usr/local/apache/bin/apachectl restart 若出现错误: httpd: Could not reliably ...

  6. C#数据之DataTable

    C#创建DataTable的几种方式 第一种方式:直接添加数据对象 DataTable table = new DataTable(); table.Columns.Add("strName ...

  7. script脚本中写不写$(document).ready(function() {});的差别

    $(document).ready() 里的代码是在页面内容都载入完才运行的,假设把代码直接写到script标签里.当页面载入完这个script标签就会运行里边的代码了,此时假设你标签里运行的代码调用 ...

  8. 跟着实例学习设计模式(9)-桥接模式bridge(结构型)

    桥接模式属于结构型设计模式. 设计意图:将抽象部分与实现部分分离.使它们都能够独立的变化. 一看到设计意图,大家可能有些发懵,我们看到的继承和接口不都是抽象和实现分离的吗?尤其是接口和抽象类都是这种实 ...

  9. MySql(四):备份与恢复

    一.数据库备份使用场景 下面我就列举一下我个人理解的我们能够需要用到数据库备份的一些比较常见的情况吧. a.数据丢失应用场景 1.人为操作失误造成某些数据被误操作:2.软件BUG 造成数据部分或者全部 ...

  10. android中使用百度定位sdk实时的计算移动距离

    ;   //5秒刷新一次 private Handler refreshHandler = new Handler(){ //刷新界面的Handler public void handleMessag ...