javascript - 立方体中的 WebGL 三 Angular 形

标签 javascript webgl cube

this tutorial作者通过定义它的 6 个面(6*4 个顶点)来显示一个立方体,然后告诉 webgl 每个面上的三 Angular 形。

这不是浪费吗?只定义 8 个顶点并告诉 webgl 如何连接它们以获得三 Angular 形不是更好吗?多个顶点共享颜色是否存在问题?

为了说明我的担忧:如果作者用索引数组定义三 Angular 形,为什么他需要这么多顶点?他可以指定顶点数组中只有 8 个顶点的所有三 Angular 形。

最佳答案

此处示例的作者。正如您所怀疑的,问题与立方体的着色有关。

最容易理解这类代码的方法是将 WebGL 的“顶点”不仅仅是空间中的简单点,而是属性包。一个特定的顶点可能是束 <(1, -1, 1), red>。就 WebGL 而言,位于空间同一点但颜色不同(例如 <(1, -1, 1), green>)的不同顶点将是完全不同的顶点。

因此,虽然立方体在空间中点的数学意义上只有 8 个顶点,但如果您希望每个面具有不同的颜色,则这些点中的每一个必须由三个不同的顶点占据,每种颜色一个 - 这使得WebGL 意义上的 8x3=24 个顶点。

它在内存方面的效率不是很高,但与 CPU 能力相比,内存的成本很低,更规范化的表示需要高效处理。

希望能澄清事情。

关于javascript - 立方体中的 WebGL 三 Angular 形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463607/

相关文章:

javascript - 在 webgl 中进行全屏手绘的正确方法是什么?

python - 通过python算法将Square Hald clut转换为Classic Hald clut

php - 数组数据格式redis pub子 channel

javascript - 使用IFrame API的YouTube嵌入式视频无法播放完美的循环,并在每次循环时重新缓冲视频

javascript - 如何使 iFrame 在单击按钮时进入全屏?

python - 图像的 RGB 立方体

java - 将物体从墙上弹起

javascript - 这两种获取canvas对象的方式有什么区别

javascript - WebGL - 纹理未正确显示

javascript - Canvas 库处理 SVG 的方式和 SVG 库处理 SVG 的方式有什么区别?