javascript - WebGL-渲染一个又一个形状时出现问题

标签 javascript html opengl-es webgl

我一直在关注 WebGL tutorial series我在本系列中的重点涉及将纹理和光照应用于 3D 球体。为了真正掌握此类程序的正确实现方式,以便我将来可以编写它们,我正在尝试实现没有照明和纹理的代码版本。在一次在 Canvas 上绘制一个(使用不同的设置)之前,我已经能够绘制 3D 参数化形状,因此我基本上将该代码添加到 program 中。从教程中提供。教程代码遵循一个结构,其中有一个名为 webGLStart() 的函数,该函数在页面加载时调用,该函数本身调用 initGL() (用于设置 Canvas ),initShaders()initBuffers()(用于要绘制的形状)和``drawScene()```。

我能够在 Canvas 中间成功绘制一个形状,但由于某种原因,当我尝试随后绘制另一个形状时,出现错误:无法读取属性“0”在我将模型 View 矩阵转换到新形状位置的行上未定义。按照教程中的方法,有一个数组用作堆栈,用于保存每个形状转换之前 mvMatrix 的当前状态,并在对每个形状执行最后一次转换后恢复状态。我在想,在绘制第一个形状后,也许 mvMatrix 的当前副本没有正确弹出,因为经过一些调试后,似乎在弹出之前和之后有相同数量的堆栈帧。我不认为这是导致错误的原因,但这是我能找到的唯一可能的问题。

我很确定我正在正确地为每个形状设置缓冲区,因为我基本上正在做教程 source code 中所做的事情。所以我不知道出了什么问题。我有一个 my code here 的片段(但仍然很长)对于 initBuffers()drawScene() 函数。

什么可能导致这个问题?

最佳答案

代码是正确的,只是在绘制形状之前 translate() 函数中遗漏了一个参数。

关于javascript - WebGL-渲染一个又一个形状时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035808/

相关文章:

javascript - 在 Internet Explorer 10 中将文本保存到本地文件中

java - Android 应用程序和 Web 浏览器之间的套接字通信

iphone - 绘制多个相同对象的最有效方法?

android - 颜色覆盖opengl es中的纹理映射

Javascriptcalculate() 函数在 Firefox 和 Safari 中不起作用

javascript - 使用javascript进行最小最大验证

javascript - 检查 2 个字段值是否匹配

javascript - 如何提高 html、css、javascript 的知识

java - NoClassDefFoundError、proGuard 和补间引擎库

javascript - DOM 事件目标解构