【问题标题】:OpenGL style stack library for as3as3 的 OpenGL 样式堆栈库
【发布时间】:2011-01-21 12:06:06
【问题描述】:

我目前正在开发 AS3 中的 3D 引擎,我已经为即将推出的新 Molehill API 设计了它,但我也想渲染到当前的 AS3 图形 API。我以为我会编写一个基于堆栈的实现来渲染到目标 DisplayObject。然后我意识到我基本上可以创建一个 OpenGL API 风格的接口来从实际的光栅化过程中抽象出我的 3D 引擎。 (就像在 OpenGL 上构建的任何 3D 引擎一样)这也将允许其他 3D 引擎像使用任何其他导入的库一样使用代码。显然会有处理视口、矩阵堆栈等的功能,但我是一个简单的例子:

AS3GL.begin( AS3GL.GL_TRIANGLES );

AS3GL.color3f(1,0,0);
AS3GL.vertex2f(0,0);

AS3GL.color3f(0,1,0);
AS3GL.vertex2f(.5,0);

AS3GL.color3f(0,0,1);
AS3GL.vertex2f(.5,.5);

AS3GL.end();

我想知道在 AS3 上是否已经存在类似的东西我可以使用,或者是否有人有任何关于 OpenGL 的内部状态系统和/或堆栈实现的详细信息。

【问题讨论】:

  • 这是个好问题。我还没有看到这个实现,但这是我过去考虑过的事情。打算考虑一下...我可能会回来回答...
  • 所以你想用这些函数重新创建即时模式,每帧调用一次,没有显示列表,没有顶点缓冲区? OpenGL 已经放弃了这种方法,但也许您的目标是最简单的程序员模型,无需额外设置。
  • 我见过的最接近的似乎是 Yogurt3D (drawlogic.com/2009/04/30/…)。该网站目前已关闭,但我记得以前看过一些令人印象深刻的演示。
  • @alex,我从我自己的实际使用角度考虑这个问题。我刚刚创建了一个 Molehill 3D 引擎,我想重用渲染器代码以与我们将数据传递到 Molehill 的方式相同/类似的方式将命令传递给光栅化器 API。但我明白你关于立即模式的观点,我假设你在谈论可编程顶点着色器等
  • @George 我认为 Yogurt3D 实际上是用 OpenGL 指令分析现有的 C 代码并将其迁移到 Flash,这不是我真正要谈论的方法,我只是在考虑与介于当前的 GPU API 和 Flash 应用程序本身之间,但仍以 Flash 编写。

标签: actionscript-3 api opengl graphics 3d


【解决方案1】:

这里是 Adob​​e Mole。你想做的事情是很有可能的。您应该从阅读旧的 OpenGL 规范开始。但是,请考虑您真正想要做什么以及为什么。作为一项教育活动,将 70 年代的技术映射到现代 API 非常棒。如果你想做一个有用的库或学习现代 3d,这是一条死胡同。 Molehill API 的一大优点是它在脚本语言和 GPU 之间实现了正确的平衡:使用脚本批量绘制大块的三角形。对每个顶点进行多次调用会破坏该模型。

【讨论】:

    【解决方案2】:

    我决定自己开始这个项目,如果有人愿意贡献,请与我联系。我已经注册了网站AS3GL.com 并为此设置了一个谷歌代码仓库。如果有人能够发送有关 OpenGL 的堆栈和内部工作原理的信息,我将不胜感激。

    [编辑]

    这个库已停产,但这里是 GitHub 存储库供参考 'dev branch' https://github.com/Zest3D/as3gl/tree/dev

    【讨论】:

    • 首先想到的是 OpenGL 参考。说到实现,有很多。一种开源是 Mesa3d。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 2019-03-03
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多