版权声明:本文为博主原创文章,未经博主同意不得转载。转载联系 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. Python: Write UTF-8 characters to csv file

    To use codecs, we can write UTF-8 characters into csv file import codecs with open('ExcelUtf8.csv', ...

  2. Jenkins连接TFS出现错误:“jenkins com.microsoft.tfs.core.exceptions.TECoreException”的问题收集

    没成功解决过,下面提供一些收集的链接地址,因为这个问题真的很少. https://social.msdn.microsoft.com/Forums/vstudio/en-US/1a75a0b2-459 ...

  3. PHP利用lua实现Redis Sorted set的zPop操作

    function zPop($key) { $script = <<<EOD local v = redis.call('zrange', KEYS[1], 0, 0); if v[ ...

  4. 别名alias——快捷方式

    有时候在 linux 或者 windows 上面需要对相关的命令进行快捷处理,这时候可以用到别名—— alias : linux别名设置假设我们需要设置一个  dockers  命令,用来替代 doc ...

  5. mysql----乐观锁总结和实践

    悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性.如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这 ...

  6. xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.

    其原因是肯能对openssh版本进行了升级. 解决方法为:         yum install xorg-x11-font* xorg-x11-xauth        /etc/ssh/sshd ...

  7. 推荐一个好的数据库工具Embarcadero DBArtisan

    最近的项目中用到了DB2数据库,由于DB2数据库客户端在操作操作和控制方面不是很方便,如存储过程的编写.后来我们在数据库的操作都转在DBArtisan上了,最新版好像是8.12.        下面介 ...

  8. VC++动态链接库(DLL)编程深入浅出(三)

    前面我们对非MFC DLL进行了介绍,这一节将详细地讲述MFC规则DLL的创建与使用技巧. 另外,自从本文开始连载后,收到了一些读者的e-mail.有的读者提出了一些问题,笔者将在本文的最后一次连载中 ...

  9. mysql 升序 字段值为NULL 排在后面

    select * from yryz_products_t order by isnull(sort),sort;

  10. 【BIEE】BIEE报表根据维度表展示事实表不存在的维度

    事实表数据 维度表数据 现在报表展示如下: 这样展示报表让人感觉数据缺失了,需要显示成如下样子,感觉会比较舒服一点 那么,如何实现上面的完美操作呢? 实现步骤 分析编辑页面→表视图属性→包含仅具有空行 ...