低レベルのLinuxグラフィック


11

教育目的のために、キーボードイベントを処理し、XやSDLなどの大きな依存関係なしにグラフィックスを描画できるLinux環境でアプリケーションを作成したいと思います。XとSDLは単なるプログラムなので、環境に固有の他の方法に依存する必要があるため、これは可能であると思います。この理解は正しいですか?

もしそうなら、私はそのようなプログラムを書くことをどこで学ぶことができますか?私の限られた経験から、カーネルの呼び出しや特殊ファイルへの書き込みが必要になることがわかりました。しかし、私はその問題に関するチュートリアルを見つけることができませんでした(私はGoogleにとって何もわかりません)。

また、関連がある場合は、VirtualboxでDebian Squeezeを実行しています。私はネットワーキングなしでnetinst cdを使用したので、現時点ではあまりインストールされていません。インストールしgccますが、これ以上何もせずに済むことを願っています。


これがあなたの探しているものかどうかはわかりませんが、色が出ます。ncurses
Joe

Linuxのフレームバッファを調べてみてください。
mouviciel 2012年

Xおよびfbdevに加えて、2001
。– user16764

ベアメタルプログラミングを本当に実行したい場合(たとえば、ビデオモードを設定するために割り込みを呼び出すなど)、DOSをお勧めしますか?
user16764 2012年

これは役に立ちます:tldp.org/HOWTO/Framebuffer-HOWTO
Chinasaur

回答:


13

X(またはXウィンドウシステム)は、Linuxアプリケーションが最新のLinuxデスクトップで使用する可能性が高い、最も低レベルのグラフィックAPIです。ほとんどのアプリケーションは、それほど深くは気にせず、代わりにGTKやQtなどのGUIツールキット実装を使用します。

その下には、ハードウェアドライバーとおそらくドライバー用のいくつかのX内部APIがあります。ただし、これらは通常のユーザースペースアプリケーションで使用するためのものではありません。

カーネルフレームバッファーデバイス(fbdev)を使用することもできますが、それが最新のグラフィックAPIをどの程度サポートしているかはわかりません。

編集: ウェイランドはXに代わるもので、最近主流の採用が見られたばかりです。X-Windowsシステムをまったく実行せずに、純粋にWayland上でLinuxデスクトップを実行できるようになりました。Wayland自体は、下にあるEGLドライバー(OpenGLに強く関連するAPI)に依存しています。


2
Xはフレームバッファーを使用できます。GTKとQtは、通常Xをターゲットにしますが、フレームバッファーをターゲットにすることもできます。
AProgrammer 2012年

@AProgrammer:それは本当ですが、私の答えは実際には変わりません。ほとんどの GTK / Qtアプリケーションは、(少なくとも現時点では)基盤となるフレームワークと同じようにX上で実行され、ほとんどのアプリケーションはraw X APIを直接使用しません。
Joachim Sauer

フレームバッファは、少なくとも、標準のVESAモードでのグラフィックカードの実行をサポートする必要があります。完璧ではないかもしれません(たとえば、さまざまな解像度の数が制限されていて、ワイドスクリーンモードはサポートされていないと思います)が、依存関係の数が最小限のLinuxシステムでグラフィックスが得られます。
CVn 2012年

9

Xを使用せずに入力イベントを取得したい場合は、デバイスノードからそれらを読み取る必要があります。Linuxには、ほとんどのドライバーが利用するevdevと呼ばれる汎用入力サブシステムがあります。したがって、入力イベントを読み取るには、/ dev / input内の任意のデバイスノードから読み取ることができます。

マウスデバイスノードを見つける簡単な方法は、デバイスノードで1つずつ「猫」を実行し、各「猫」の間にマウスを動かすことです。画面にデータが表示される場合は、それがマウスデバイスノードです。関連するヘッダーファイルはlinux / input.hです。使用方法の例については、xevdevドライバーのソースを参照してください。

低レベルのグラフィックス操作で、本当に野心的であると感じている場合は、通常、フレームバッファをメモリマップして、独自のビットbltを実行できます。


3

Linuxでの低レベルグラフィックの優れたチュートリアルは、こちらから入手できます

低レベル入力のスタックオーバーフローに関する良い投稿はこちらから入手できます

いずれにしても、Linuxでは直接グラフィックスにフレームバッファまたはdrm / kms(フレームバッファは2つのうち単純な方)を使用し、直接入力にはevdevを使用する必要があります。


なぜ反対票か。
Vreality
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.