OpenGLを学び始めたいのですが、それを行うために他の言語を学ぶ必要はありません。私はすでにPythonにかなり精通しており、言語を楽しんでいます。通常のAPIにどれだけ近いか知りたいだけですか?チュートリアルや本をそれほど問題なく簡単にフォローできるでしょうか?
C ++の方がパフォーマンスが優れていることは知っていますが、学習のためだけにPyOpenGLで問題が発生する可能性はありますか?
私自身はOpenGLプログラミングをほとんど行っていないことに注意してください。学習の目的には、PyOpenGLが適切な選択であると思います。主な理由は、他のほとんどのOpenGLラッパーと同様に、PyOpenGLがまさにそれであるということです。OpenGLAPIの薄いラッパーです。
PyOpenGLの大きな利点の1つは、Cでは適切なglVertex3{dfiX}
コマンドの呼び出しについて心配する必要があるのに対し、Pythonでは、glVertex3(x,y,z)
渡した引数のタイプをPythonに伝えることを心配せずに、ただ書くことができることです。これは大したことではないように聞こえるかもしれませんが、多くの場合、静的型付けに過度に関心を持つ代わりに、Pythonのダック型付けを使用する方がはるかに簡単です。
OpenGLメソッドはほぼ完全にPythonメソッドにラップされているため、Pythonで作成する場合、使用するアルゴリズムとメソッド呼び出しは、他の言語でOpenGLを作成する場合と同じです。ただし、Pythonで記述しているため、適切なポインタの使用やメモリ管理などで「ばかげた」間違いを犯す機会がはるかに少なくなり、CまたはC++でAPIを学習する場合に時間を浪費することになります。 、 例えば。
PyOpenGL
私はそれが良い選択ではないと思います。私の意見ではC / C ++では、OpenGLコードをいじくり回すのが簡単です。単純なアプリから始めて、シェーダーを追加し、次にいくつかのジオメトリ関数を追加し、テクスチャ/ジオメトリジェネレーターを作成し、CSGを介してシーンを構築します。楽しく、コードをいじって、実験して、進行中の何かを学びましょう。私は正直なところ、Pythonでこれを行っているとは思っていません。確かにPythonでOpenGLプログラミングを行うことは可能ですが、実際に行う理由はありません。さらに、いくつかのOpenGL関数は、引数としてメモリポインターを取ります。その場合、おそらくクラス(または数十の選択肢)がありますが、C / C ++で従来の方法が利用できる場合、それらを使用する理由はわかりません。特に、PythonコードがOpenGL関数にそれらのベクトルまたは配列を渡すために使用するラッパーの量について考えるとき。それをする本当の理由なしに物事をより複雑にするように見えます。さらに、特に「RAW」OpenGLを使用すると、パフォーマンスが著しく低下します。
さらに、ゲームを作成する場合は、C++またはその他の「Python以外の」言語を使用する必要がある可能性が非常に高くなります。
PS私は十分なOpenGLプログラミングと多くのDirectXプログラミングを行いましたが、C ++を専門としており、特定のアルゴリズムテスト、ツール、およびスクリプトにのみPythonを使用しています。