【问题标题】:WebGL- Issue when rendering one shape after anotherWebGL-渲染一个又一个形状时的问题
【发布时间】:2015-12-02 05:53:28
【问题描述】:

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

我能够在画布中间成功绘制一个形状,但由于某种原因,当我尝试随后绘制另一个形状时,我收到错误:Cannot read property '0' of undefined 在我翻译的那一行模型视图矩阵到新形状的位置。按照教程中的方法,有一个数组用作堆栈,用于在每个形状转换之前保存 mvMatrix 的当前状态,并在对每个形状执行最后一次转换后恢复状态。我在想也许 mvMatrix 的当前副本在绘制第一个形状后没有正确弹出,因为经过一些调试,似乎在弹出之前和之后有相同数量的堆栈帧。我不认为这是导致错误的原因,但这是我能找到的唯一可能的问题。

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

什么可能导致问题?

【问题讨论】:

标签: javascript html opengl-es webgl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2016-02-24
    • 2018-07-22
    • 2021-12-20
    • 2012-08-25
    相关资源
    最近更新 更多