12

Linux とグラフィカル API について調べていますが、opengl がオペレーティング システムにどのように実装されているかについて混乱しています。カーネルを使用して、どのピクセルに色を付けるかどうかについてグラフィックカードと「対話」するライブラリのセットですか? もしそうなら、私はパイプラインがどこに入るのか分かりません.3Dシーンがどのようにラスタライズされ、シェーダーがジオメトリに影響を与えるか.

また、GPU が DX と OGL の両方のシェーダー言語をサポートできるのはなぜですか? - シェーダー言語は実際にどこに適合しますか?- 実行時にコンパイルまたは解釈されますか?

いくつかのゲーム エンジンを使用しているにもかかわらず、私自身はグラフィカル API の経験があまりありません。

4

3 に答える 3

3

ここで徹底的に説明しました: https://stackoverflow.com/a/6401607/524368とここhttps://stackoverflow.com/a/7967211/524368

于 2012-06-16T22:50:20.837 に答える
0

少なくともほとんどの一般的なグラフィック カードでは、OpenGL パイプライン (固定またはプログラム可能) のほとんどがグラフィック ハードウェア自体に実装されています。これは、DirectX の場合はさらに当てはまります (つまり、DirectX には、現在のハードウェアで直接サポートされていない OpenGL の機能がかなり欠けています)。

シェーダーは通常コンパイルされます。グラフィックス カードには専用プロセッサ (または、多くの場合、複数) があるため、C コンパイラが CPU に対して行うのと同じように、コンパイラはシェーダー言語で入力を受け取り、それをそのプロセッサのアセンブリ言語に変換します。異なる入力言語をサポートすることは、単一の CPU が C、C++、Pascal、Fortran、Cobol などの入力をサポートすることと大差ありません。

于 2012-06-16T22:08:10.717 に答える
-1

APIの実装方法については話せません。

しかし、私はシェーダーがコンパイルされていることを経験から知っています。そのため、それらをコンパイルして GPU に送信し、そこで実行します。

于 2012-06-16T22:02:35.950 に答える