哪些是编写图形程序最成熟,支持最好的解决方案?适用于OpenGL /通用图形的最佳动态语言
我一直在使用C++与OpenGL/GLUT,但想尝试更灵活和表达的方法。
Ruby和处理? Python和OGRE?什么事情对你有好处?
哪些是编写图形程序最成熟,支持最好的解决方案?适用于OpenGL /通用图形的最佳动态语言
我一直在使用C++与OpenGL/GLUT,但想尝试更灵活和表达的方法。
Ruby和处理? Python和OGRE?什么事情对你有好处?
鉴于你熟悉C++,你可能会给Lua一试。 Lua是一种动态语言,可以嵌入到任何C/C++程序中。它在游戏行业非常流行。
如果你在实验只是感兴趣,我建议选择绑定的三维框架的动态语言,你已经熟悉了。
我在一年或三年前开始使用Ruby/OpenGL进行实验,这很容易实现。
如果你认真想建立(无论何种原因)的一个项目,我建议选择基础上的
如果你希望你的项目必须跨越differen很容易运行框架的许可证动态语言绑定在OS中,你可能想用Ruby(jRuby)或JavaScript(因为这些语言在那里得到很好的支持)中的绑定选择用Java编写的框架(因为JVM在任何地方运行)。但是,这会限制您可以使用的框架。 (这是我的OSS + Linux偏差显示)。
维基百科有一个list of game engines。基于几个标准,我开始使用jMonkeyEngine(v2)开发一个项目,并发现使用Rhino进行工作和控制非常容易(JVM JavaScript实现)。
我最近看到另一个基于Java框架的演示文稿,其中有几种语言的绑定,看起来非常酷(受Ogre引擎的启发),但我忘记了名字,并且在列表中找不到它。
在做C#的时候,我看过针对dotNet和Mono的跨平台运行的项目/框架,但获得(Tao?)框架和Mono Lua绑定运行的开发版本太麻烦了。也许事情已经改变。
概括起来,挑选可你想用绑定您要使用的动态语言环境(S)运行的框架。即使可用于您想使用的动态语言的框架库代码非常少,如果您可以使用底层语言,也可以轻松扩展它。如果你对C++流利,Java和C#不应该太过分。
如果您正在寻找支持OpenGL外的开箱(无外部绑定)动态语言尝试这些:
我想提及PyOpenGL作为一个选项来考虑Python。
如果您已经熟悉OpenGL,PyOpenGL基本上是一个用Python编写的API包装器。起初我很惊讶,代码在Python和C++中看起来有多相似。像这样(注意我也使用Pyglet):
def setup_render(self):
'''First rendering setup'''
glClearColor(0.0, 0.0, 0.0, 1.0)
glClearDepth(1.0)
glEnable(GL_LIGHTING)
glEnable(GL_DEPTH_TEST)
glEnable(GL_ALPHA_TEST)
glEnable(GL_CULL_FACE)
def draw(self, time_passed):
'''Drawing events'''
if self.has_exit:
pyglet.app.exit()
return
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glUseProgram(self.shader.program)
self.set_lights()
# Draw objects here
glTranslate(0, 0, -10)
glScale(5.0, 5.0, 5.0)
glutSolidSphere(1, 16, 16)
看看它与C++代码有多相似。
我能够在Python中快速获取PyOpenGL,并在200行以下实现了Quaternion类。如果您对Python感到满意,我会毫不犹豫地推荐您检查它。
顺便说一下,PyOpenGL's API documentation也比official one更具可读性。
我个人的建议,如果你是在成熟和支持后将是Processing - 非常灵活,开源,有据可查和great community。语法是类C的,所以你应该没有困难地捡起它。
一个看起来非常有前途(!但我还没有得到全面的测试还)略多尖端的解决方案是Penumbra - 在动态函数式编程风格的Clojure库OpenGL开发。这里有一个优雅的小片段:
(enable :light0)
(push-matrix
(translate 0 0 -10)
(draw-quads
(vertex 0 0 0)
(vertex 0 1 0)
(vertex 1 1 0)
(vertex 1 0 0)))
指出,由于大量的Clojure宏聪明的,它会自动和透明地处理类似的事情在适当的时候弹出的变换矩阵。其他看起来不错的东西就像GPGPU支持一样。
+1适用于Racket(原PLT计划)的链接。 – 2012-09-28 08:47:29