5

クロスプラットフォームの描画プログラムを作成したいと思います。アプリを作成するための要件の 1 つは、キャンバス上でピクセル レベルの精度を維持することです。たとえば、誰かに頼るのではなく、自分で線画のアルゴリズムを書きたいと思っています。アンチエイリアシングは一切必要ありません (やはり、ピクセル レベルの制御が必要です)。画面上でのユーザー インタラクションを迅速かつ応答性の高いものにしたいと考えています (高速アルゴリズムを記述できるかどうかは未定です)。

理想的には、これを Python で作成するか、2 つ目の選択肢として Java で作成したいと考えています。最終的なアプリを簡単にクロスプラットフォームにする機能は必須です。それらの周りに抽象化レイヤーを作成できる限り、必要に応じて、異なる OS の異なる API にサブミットします。何か案は?

補遺:画面に描画する機能が必要です。私が理解したファイルに描画します。

4

5 に答える 5

4

ちょうど今週、ライブラリ pyglet を使用して、Python から OpenGL を使用して 2D グラフィックスを実行するためのスライドとデモ コードをいくつかまとめました。代表的な投稿は次のとおりです: Pyglet の第 2 週、より優れた頂点スループット(または同じ基本的なアイデアを使用した 3D のもの)

これは非常に高速です (比較的言えば、Python の場合)、約 1,000 個の独立して配置および方向付けされたオブジェクトを画面上で移動させることができました。それぞれに約 50 個の頂点があります。

非常に移植性が高く、この環境で書いたすべてのコードは、Windows、Linux、Mac (および Pypy のようなあいまいな環境でさえ) で動作し、何も考える必要はありません。

これらの投稿の一部は非常に古く、リンクが切れています。「グラフィック」タグを使用して、関連するすべての投稿を見つけることができるはずです。

于 2008-09-15T21:43:51.503 に答える
2

Python 用のPygletライブラリがニーズに合う場合があります。クロスプラットフォームのグラフィックス API である OpenGL を使用できます。アンチエイリアシングを無効にして、画面の領域をバッファまたはファイルにキャプチャできます。さらに、そのイベント処理、リソースの読み込み、および画像操作システムを使用できます。おそらく、PIL (Python Image Library) や、人気のあるクロスプラットフォームのベクター グラフィックス ライブラリである Cairo に結び付けることもできます。

純粋な PyOpenGL の代わりに Pyglet について言及します。これは、Pyglet が多くの醜い OpenGL のものを透過的に処理するためです。

友人と私は現在、Pyglet を使用した描画プログラムに取り組んでいます。いくつかの癖があります。たとえば、OS X では OpenGL は常にダブル バッファリングされるため、すべてを 2 回描画する必要があります。1 回目は現在のフレーム用で、もう 1 回は別のフレーム用です。表示が更新されるたびに反転されるためです。現在の進行状況は、この Subversion リポジトリ で確認できます。(トランク内の Splatterboard.py は、実行するファイルです。) svn を使用していない場合は、最新のソースの .zip を電子メールでお送りします。コードを調べる場合は、気軽にコードを盗んでください。

于 2008-09-15T21:38:45.290 に答える
1

言語の選択が自由であれば、Haxe で作成された Flash ファイルが適しているかもしれません。Haxe は無料で、完全な動的プログラミング言語です。次に、関連する Neko があります。これは、Mac、Windows、および Linux で実行する仮想マシン (Java、Ruby、Parrot など) です。いくつかの点で新しい改良された形式の Flash であるため、当然のことながら、何かを描画することができます。 http://haxe.org/

于 2008-09-16T05:14:48.690 に答える
0

C++ を使用したい場合、QT の Canvas と QPainter はこの仕事に非常に適しています。そしてクロスプラットフォームです。

QT 用の python バインディングがありますが、使用したことはありません。

Java に関しては、SWT を使用すると、キャンバスのピクセル レベルの操作がやや難しく、遅くなるため、お勧めしません。一方、Swing の Canvas は非常に優れた応答性を備えています。私は AWT オプションを使用したことがありませんが、おそらくそこに行きたくないでしょう。

于 2008-09-15T21:21:17.610 に答える
0

wxPythonをお勧めします

それは美しくクロスプラットフォームであり、ピクセルごとの制御を取得できます。気が変わった場合は、pyglet や agg などのライブラリで使用できます。

docs と demos のダウンロードで、まさにあなたがやろうとしていることのいくつかの有用な例を見つけることができます.

于 2008-09-15T21:59:56.923 に答える