开发者社区> 悟静> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: OpenGLES 与 WebGL 中顶点属性的组织格式的误解 - 一个不好笑的笑话 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
+关注继续查看

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 的,这个在我了解的范围人,俺敢肯定!但,您别忘了,俺了解的范围,俺都不知道多还是少,所以您就别肯定了,还是再咨询下室外高人吧。


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





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OpenGL 之 GPUImage 源码分析
GPUImage 是 iOS 上一个基于 OpenGL 进行图像处理的开源框架,后来有人借鉴它的想法实现了一个 Android 版本的 GPUImage ,本文也主要对 Android 版本的 GPUImage 进行分析。
171 0
阿里云新品发布会第69期:小程序一云多端解决方案
小程序云(MiniProgramCloud)是阿里云面向小程序场景提供的一站式开发平台,旨在帮助开发者实现一云多端的业务战略。小程序云提供了有服务器和无服务器两种产品服务模式。小程序云应用是有服务器模式,提供了包括资源编排、应用托管、运维监控等服务。
6003 0
WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的差异简析
WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的差异简析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
876 0
Centos6.4 openNebula
OpenNebula 是一套开源的云计算基础管理工具,用来方便管理员在数据中心统一部署、创建、分配和管理大量的虚拟机,企业数据中心可以利用这套工具搭建自己的私有云,为 自己内部提供 IaaS 服务,类似的开源产品还有 Eucalyptus, openQRM 等. 采用最小化的 CentOS 6.4 安装版本 CentOS-6.4-x86_64-minimal.iso ,安装完后配置一下网络连接。
1162 0
Opengl ES 视图与投影
注:不得不转这一篇,因为这一篇里有两个资源链接,而这两篇链接中还有链接,有空儿一定好好读一读。 opengl es 视图与投影 博客分类:  android   关于android的投影矩阵,一般有两种,一种是矩阵投影,另一种是透视投影。
924 0
OpenGL ES 正反面设置指令
OpenGL ES 正反面设置指令 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
892 0
+关注
悟静
从事软件行业近二十年
690
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载