2011-12-24 18 views
11

私は自分でグラフィカルライブラリについて学びたいと思います。私は線と形をピクセルのリストとして定義する小さなプログラムを作りましたが、画面に直接アクセスして中間点を使わずに画面上に点を表示できる方法を見つけることができません。Pythonで直接ハードウェアにアクセスする方法はありますか?

gnome、cocoaなどのようなあらかじめビルドされたグラフィカルライブラリを使用したくないということです。私は通常Pythonを使用してPythonを使用しますが、Cモジュールをコード化して統合することもできます。

画面のハードウェアに直接アクセスすると、Pythonのマルチプラットフォーム側が消えてしまいますが、私はそれを無視して学習します。それで、Pythonで直接ハードウェアにアクセスする方法はありますか?あれば、それは何ですか?

+7

を助け

希望誰も、(とにかくほとんどの時間、)もない最先端のビデオゲームは、低レベルのことを行いません。それがドライバーの仕事です。事実上すべてのアプリケーションでは、完全に実用的ではありません。非常に複雑で、異なるハードウェアに移植することは難しく、ハードウェアベンダーが何かを改善する(パイプラインを拡張するなど)たびに破損しやすく、それはちょうど私の頭の上です。あなたがドライバーを書いていない限り、そこから学ぶべきことは何もありません。 DirectX、OpenGLなどがあります。そして、あなたはPythonからうまくそれら(または少なくともOpenGL)にアクセスすることができます。 – delnan

+6

@delnanええ、しかし、質問が正しければ、彼はなぜ彼が学びたいのかを正当化する必要はありません。ドライバーを書いてみたいと思ったら?ハードウェアベンダーが何かを向上させるときはいつも破壊する傾向があります。これはどのようにピクセルをオン/オフすることに関連していますか?それは疑問です。他のすべてがあなたの広く投機的な意見です。ピクセルだけを表示することは素晴らしい学習体験です。 – yannis

+3

あなたは正しいかもしれません。しかし、私の印象は、OPは、低レベルのグラフィックプログラミングを構成するものに間違った印象を受けているということです。 – delnan

答えて

2

これは偉大な自己学習パスをようで、私は価値が私の2-セントを追加し、GObjectのカイロとpygameのモジュールいくつかの時間を見て検討することをお勧め。

ザパイソンGObjectのモジュールが現在の関心よりも高いレベルにあってもよいが、それはカイロの画素レベル描画を可能にする(home page参照)と同様のPython

を用いた携帯GUIアプリケーションのための一般的な基盤を提供

pygameのは、画素レベルのメソッドと同様に(高いレベルで)グラフィックスドライバへのアクセス方法を持っている - ここでは、迅速code exampleある

7

いいえ、Pythonは、ビデオカードへのこの種のハードウェアアクセスのための最良の選択ではありません。 DOSでCを書くことをお勧めします。まあ、実際には、私はそれをお勧めしません。それは恐ろしいことです。しかし、それは私がそれをやることを学んだ方法であり、おそらく中間的なものなしに直接ハードウェアにアクセスするために得られるほど友好的です。

どちらもドライバを書かずにビデオハードウェアに直接アクセスできるため、LinuxやNTではなくDOSと言います。つまり、ドライバAPI全体を学ぶ必要があり、Windows NTにビデオドライバを書くことはかなり複雑なので、それはあまり明白ではありません。多くの "魔法"を呼び出す必要があります。

私はあなたに実際のポインタとそれらと愚かなことをする能力を与えるので、私はPythonではなくCと言う。 DOSでは、Cの任意の物理メモリアドレスに書き込むことができます。これはあなたが望むものと思われます。あなたがPythonがうまくいく単純なことをしたいと思っていたとしても、あなたがハードウェアへの直接アクセスを許すほど恐ろしいOSの下でPythonを動作させようとすると、それ自体が欲求不満になります。

そして、他の人が言っているように、あなたが現実世界でこのプロジェクトで学んだものを使用することを期待しないでください。興味深いかもしれませんが、このように実際のアプリケーションを作成しようとすると、コードを維持しなければならない人はすぐに撃たれます。

1

これは今かなり古いスレッドですが、一方で、私はそれにつまずきました思いやりのある同じ質問。

私はアセンブリ言語でプログラミングしました。私の日には、スクリーン上の描画は、単にメモリ位置に価値を突きつけるという問題でした。値はピクセルをオンまたはオフにし、その色を定義します。

「ポーク」という用語は、基本的には組み立て者ではなく、基本的なものです。アセンブラでは、データレジスタに値を書き込んだ後、別のコマンドを使用してデータをどこに置くかをプロセッサに指示し、通常は16進形式のアドレスレジスタを指定する必要がありました。また、それぞれのプロセッサにはそれぞれ独自のアセンブリ言語がありました。しかしhecは速くコードでした!

ハードウェアが進歩するにつれて、グラフィックハードウェアプログラミングがますます複雑になることがわかりました。単純にピクセルを定義するよりもはるかに多くのことがあります。グラフィックスサブシステムには独自のプロセッサーがあり、それはあなたが話すことを学ばなければならないことです。プロセッサーは記憶場所に物事を植え付けるだけではありません。 (しばらくの間、世界で最も速いスーパーコンピュータだったのはグラフィックスチップで走ったと信じています!)「Plonk」は基本的なコマンドではありません。

申し訳ありません。私は逃げる。元のポスターの質問に答えて、私は、グラフィックス描画プロセスを理解するという目標は、ラズベリーパイを実験することによって最高に達成できたと考えています。 Pythonとの互換性があり、そのためには完璧です。そのハードウェアは十分に文書化されており、安価で使いやすいものです。これは誰か、乾杯、M

関連する問題