7

グラフィカル プログラムを作成するための最も成熟した、十分にサポートされているソリューションはどれですか?

OpenGL/GLUT で C++ を使用してきましたが、より柔軟で表現力豊かなアプローチを試してみたいと考えています。

ルビーとプロセッシング?パイソンとオーガ?あなたにとってうまくいったことは何ですか?

4

5 に答える 5

8

実験だけに興味がある場合は、既に使い慣れた動的言語のバインディングを備えた 3D フレームワークを選択することをお勧めします。

1 年か 3 年前に Ruby/OpenGL を使った実験を始めましたが、簡単に試すことができました。

(何らかの理由で) プロジェクトを真剣に構築したい場合は、以下の組み合わせに基づいてフレームワークを選択することをお勧めします。

  • 実装されているネイティブ言語 (または実行されるランタイム)
  • エンジンまたはランタイムで使用可能な動的言語バインディング
  • フレームワークのライセンス

プロジェクトをさまざまな OS 間でかなり簡単に実行できるようにしたい場合は、Java で記述されたフレームワーク (JVM はどこでも実行されるため) を選択することをお勧めします。そこでサポートされています)。ただし、これにより、使用できるフレームワークが制限されます。(これは私の OSS + Linux バイアスの表示です)。

ウィキペディアにゲーム エンジンのリストがあります。いくつかの基準に基づいて、jMonkeyEngine (v2) を使用してプロジェクトを開始し、Rhino (JVM JavaScript 実装) の操作と制御が簡単であることがわかりました。

私は最近、別の Java ベースのフレームワークからのいくつかの言語のバインディングを備えたプレゼンテーションを見ましたが、これは (Ogre エンジンに触発されて) とてもクールに見えましたが、名前を忘れてしまい、リストに見つかりませんでした。

当時 C# をやっていて、複数のプラットフォームで動作するように dotNet と Mono の両方を対象とするプロジェクト/フレームワークを見ましたが、(Tao?) フレームワークの開発ビルドと Mono Lua バインディングを実行するのは面倒でした。多分物事は変わった。

要約すると、使用する動的言語のバインディングを使用して、必要な環境で実行できるフレームワークを選択します。使用したい動的言語で利用できるフレームワーク ライブラリ コードがごくわずかであっても、基礎となる言語を操作できれば、簡単に拡張できます。C++ に精通している場合、Java と C# はそれほど難しくありません。

于 2009-12-15T01:06:00.747 に答える
5

C++ に精通していれば、Luaを試してみることができます。Lua は、あらゆる C/C++ プログラムに組み込むことができる動的言語です。ゲーム業界で大人気です。

于 2009-12-15T00:20:37.437 に答える
4

検討するオプションとして、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に慣れている場合は、遠慮なくPythonをチェックすることをお勧めします。

ちなみに、PyOpenGLのAPIドキュメントは、公式のドキュメントよりもはるかに読みやすくなっています。

于 2010-04-20T11:15:07.467 に答える
2

あなたが成熟してサポートされている場合の私の個人的な提案は、Processing - 非常に柔軟で、オープンソースで、十分に文書化されており、優れたコミュニティです。構文は C に似ているので、問題なく理解できるはずです。

非常に有望に見えるもう少し最先端のソリューションの 1 つ (ただし、まだテストを行っていません!) は、 Penumbraです。これは、動的関数型プログラミング スタイルでの OpenGL 開発用の Clojure ライブラリです。ここにエレガントな小さなスニペットがあります:

(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 サポートのようなものです。

于 2010-09-23T15:16:52.020 に答える
2

すぐに使用できる (外部バインディングなしで) OpenGL をサポートする動的言語を探している場合は、以下を試してください。

于 2009-12-15T06:21:37.723 に答える