• OpenGLES 与 WebGL 中顶点属性的组织格式的误解


    版权声明:本文为博主原创文章,未经博主同意不得转载。转载联系 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 的。这个在我了解的范围人,俺敢肯定!

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


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





  • 相关阅读:
    哈夫曼树
    MongoDB
    Node.js 搭建Web
    Node.js
    HDFS编程
    scp
    MapRecude
    级数
    (转)MySQL百万级数据库优化
    ssh
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10043496.html
Copyright © 2020-2023  润新知