【问题标题】:How to find out where specific variables come from?如何找出特定变量的来源?
【发布时间】:2013-07-11 01:02:42
【问题描述】:

我目前正在尝试学习 WebGL 和 JavaScript,因为我想利用我的图形编程技能来创建 3D Web 应用程序。我习惯用 C++ 进行 OpenGL 编程。

现在,在做一些教程时,我遇到了一些变量,据我所知,这些变量既没有在任何地方声明,也没有包含在其他脚本中。这里有两个例子:

khronos wiki tutorial 不断使用变量g,例如:

g.program = simpleSetup( /* ... */ );

g 从未在此范围内声明。如何找出它代表什么?当然,对于 'g' 或 'javascript g',Google 不会产生太多搜索。

另一个例子是voxolent beginners guide,它使用mat4,开头类似:

mat4.identity(mvMatrix);

由于了解 OpenGL,我了解这行代码:从模型视图中获取单位矩阵,但是 mat4 是从哪里来的?在我自己的项目中使用这行代码会破坏我的脚本。 Google 为 'mat4' this documentation 产生了收益,但它也说简单地使用:

mat4.create();

...如果没有进一步的步骤,这显然是行不通的。

我在这里缺少什么?当我在示例/教程/文档中看到未知变量时,我是否总是需要猜测/挖掘?如何在我的脚本中包含mat4?什么是g?

请给我解释一下。

【问题讨论】:

  • 我猜 g 可能是在该教程顶部指定的帮助程序库之一中定义的。不过这些链接似乎不起作用。
  • 如果您查看示例的实际源代码,可能会很明显,但 mat4 来自外部矩阵数学库,而 g 是用于存储对WebGL 3D 上下文。

标签: javascript variables webgl libraries


【解决方案1】:

关于变量“g”的问题,它只是一个全局可访问的变量,包含许多其他有用的变量。

在全局范围内,您声明 var g = {};,然后您可以通过 g.myGlProgram = simpleSetup(...) 或 g.myVertexBuffer = ctx.createBuffer(...) 将成员添加到 g

这只是一个不错的 JavaScript 技巧

【讨论】:

    【解决方案2】:

    我发现mat4来自js/math/gl-matrix-min.js

    这是我使用谷歌浏览器的做法:

    1. 加载页面http://voxelent.com/html/beginners-guide/1727_04/ch4_ModelView_Rotation.html
    2. 按 F12
    3. 切换到控制台选项卡并输入mat4,结果看起来不是内置对象,因为我可以看到紧凑的源代码
    4. 切换到 Sources 选项卡并切换到 Source 选项卡,查看树
    5. 刚刚展开 js 文件夹,看到 math 文件夹并展开
    6. 看了很多mat4.setmat4.transpose...

    哦,第一行暗示源代码来自https://github.com/toji/gl-matrix/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-12
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多