最接近 three.js 的完整原生库是啥?

Posted

技术标签:

【中文标题】最接近 three.js 的完整原生库是啥?【英文标题】:What is the closest complete native library to three.js?最接近 three.js 的完整原生库是什么? 【发布时间】:2014-01-27 09:01:01 【问题描述】:

我正在寻找最好的原生库,它在结构和简单性上与 three.js 相似,但也具有足够的可扩展性以支持 glsl 着色器。

要求:

开源或非常有据可查的可能扩展/增强功能 允许商业衍生品/使用 既可以封装在物理库中,也可以轻松与其中一个配对。 速度足以支持现代游戏图形。 基于 OpenGL 或 Mantle。 (我不想被 Windows 卡住。) Windows 支持 支持类似于three.js 本地/世界坐标系的系统。 Raycasting 支持进行碰撞检测。

巨额奖金:

支持 Linux 和 OSX 以及 windows。

我正在寻找与 Three.js 最接近的匹配项,它是用 C++ 编写的,类似于 three.cpp,但已完成功能并且处于较少的 beta/alpha 状态。

【问题讨论】:

为什么不直接使用 OpenGL? 检查Magnum @Vallentin 为什么不直接使用 asm,为什么要使用跨平台包装器? @OneOfOne 包装器?什么?你确定你知道什么是OpenGL。 我知道 opengl 是什么,但是在不同的平台上可以使用各种不同的头文件,并且使用库可以简化手动编写 1000 行代码的过程。 【参考方案1】:

你试过万能吗?

http://mosra.cz/blog/download-magnum.php

支持的平台

图形 API:

OpenGL 2.1 through 4.4, core profile functionality and modern extensions
OpenGL ES 2.0, 3.0 and extensions to match desktop OpenGL functionality
WebGL 1.0 and extensions to match desktop OpenGL functionality

平台:

Linux and embedded Linux (natively using GLX/EGL and Xlib or through GLUT or SDL2 toolkit)
Windows (through GLUT or SDL2 toolkit)
OS X (through SDL2 toolkit, thanks to Miguel Martin)
Google Chrome (through Native Client, both newlib and glibc toolchains are supported)
html5/javascript (through Emscripten)

【讨论】:

这看起来非常适合我的核心库。它似乎比我预期的更兼容,并且保持轻量级。【参考方案2】:

Threejs 实际上确实支持 glsl 着色器。您可以使用 THREE.ShaderMaterial 类创建自己的着色器,然后将您的 vertexShader 和 fragmentShader 传递给它。

另一种选择是直接在 WebGL 中编程。 ThreeJS 建立在 WebGL 之上。我决定使用 ThreeJS 的唯一原因是避免编写 glsl 着色器,因为 WebGL 没有材质并迫使您编写自己的 glsl 着色器,所以如果您想要的话,您可以直接使用 WebGL。 WebGL 比 Threejs 更底层。

如果您不喜欢 javascript,那么您可以使用 Java 中的 JogAmp's Ardor3D。它是一个类似于 Threejs 的 3D 场景图渲染器,但使用的是 Java。

以上所有选项都具有超快的游戏画质渲染性能。

【讨论】:

我应该更具体。我知道这三个有着色器,但我想确保我移动的任何库都能保持这种能力,并且可能内置了基本的着色器。 我真的很喜欢用java编写的能力。如果我发布我打算保持安全的东西,我只是不相信代码安全。不过感谢您的建议。 我刚刚注意到您在原始问题中提到您希望它使用 C++。在这种情况下,请使用 openscenegraph.org 它是 C++ 语言,它拥有您需要的一切。我在切换到 Ardor3D 之前使用它,因为我更喜欢 Java。你知道,如果你正在开发一个独立的应用程序,你不需要担心 Java 的安全性。只有在线小程序和 webstart 会导致安全问题。 “官方”的 Ardor3D 已经死了,你更应该提到 JogAmp 的 Ardor3D Continuation。如果你喜欢 Javascript 和 WebGL,你也应该试试 GooEngine。

以上是关于最接近 three.js 的完整原生库是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Three.js 对象的“中心”是啥?

Three.js 的 CopyShader 是啥?

three.js 在线包含它的 URL 是啥?

Three.js:Lambert 和 Phong 之间的确切区别是啥?

如何从 Three.js 画布中保存图像?

Three.js 不渲染纹理