哪些是編寫圖形程序最成熟,支持最好的解決方案?適用於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