21

これはおそらくばかげた質問だと思いますが、どのプロジェクトにどのライブラリを使用するかを理解する前に、まずそのようなライブラリの目的を本当に理解することが理にかなっていると思います.

多くのビデオ ゲームでは、OpenGL などのライブラリが使用されています。そのようなライブラリについて私が見たすべてのチュートリアルは、コンピューターに何かを描画するように指示するコードの書き方を示しています。最近のゲームでは、Zbrush、Maya、3ds Max などのソフトウェアを使用してすべてがモデル化されています。モデルは質感があり、すぐに使用できます。モデルを描画して繰り返し更新するアニメーション ループを作成するだけでよく、コードを実際にプログラムして細部まで描画する必要はないようです。これは非常に時間がかかり、モデルが役に立たなくなります。では、OpenGL や Direct 3D は、ビデオ ゲームや 3D アートとの関係でどこに出てくるのでしょうか? すべてのグラフィックスが既に作成されており、ロードして描画するだけでよい場合、それらの重要な点は何でしょうか? 主にシェーダーやエフェクトに使用されますか?

この質問は、私がこれにどれほど慣れていないかを証明するだけかもしれませんが、聞いたことがない質問です. 私はプログラミングを学び始めたばかりで、コードとロジックをかなりよく理解していますが、グラフィック ライブラリや特定のフレームワークはまったく理解できず、チュートリアルも役に立ちません。

4

5 に答える 5

11

モデルを描画して繰り返し更新するアニメーション ループを作成するだけでよく、コードを実際にプログラムして細部まで描画する必要はないようです。

コンピュータで起こるすべてのことは、何らかの形のプログラムが何をすべきかを正確に指示するためです。このメッセージを構成する文字は、選択した Web ブラウザが HTTP プロトコルを介して TCP/IP 経由でこのファイルをダウンロードし、UTF-8 でエンコードされたテキストをデコードし、そのテキストを XML、HTML、JavaScript で定義されているように解釈したためにのみ表示されます。などの標準を使用し、OS やウィンドウ マネージャーなどの表示機能とウィンドウ機能を使用して、テキスト レイアウトの Unicode 標準で定義され、HTML などに従って、可視部分を表示しました。

ファイルのダウンロードから表示まで、その操作のすべての部分は、コードによって管理されます。画面上で見ているすべてのピクセルは、何らかのコードが配置されているため、その場所にあります。

HTMLだけでは何の意味もありません。HTML ファイルを取得して画面に吹き付けるだけではありません。一部のコードはそれを解釈する必要があります。HTML をテキスト ファイルとして解釈することはできますが、そうすると、すべての書式設定が失われ、すべてのタグが表示されます。Web ブラウザはそれを適切な HTML として解釈できます。その場合、フォーマットを確認できます。ただし、いずれの場合も、HTML ファイルの意味は、その使用方法によって決まります。

提案されたアルゴリズムの「モデルを描画する」部分は、誰かが行う必要があります。そのコードを書かない場合は、モデルを表示させるライブラリまたはその他のシステムを使用している必要があります。そして、そのライブラリは何をしますか?モデルはどのように表示されますか?

モデルは、HTML Web ページと同様に、それ自体では意味がありません。別の言い方をすれば、アルゴリズムは次のように要約できます。

  1. モデルをアニメーション化します。
  2. ????
  3. 利益!

モデルを実際に解釈して画面に表示する方法という重要なコンポーネントが欠けています。OpenGL/D3D/ソフトウェア ラスタライザーなどは、そのタスクに不可欠です。

于 2012-07-27T21:30:44.537 に答える
9

多くのビデオ ゲームでは、OpenGL などのライブラリが使用されています。

何よりもまず、OpenGL はライブラリ自体ではなく、API (仕様) です。OpenGL API はソフトウェア ライブラリとして実装することもできますが、最近では、OpenGL 関数呼び出しをグラフィック カード (GPU) 上のグラフィック プロセッサへの制御コマンドに変換するドライバーの形式で OpenGL を実装することがより一般的になっています。

そのようなライブラリについて私が見たすべてのチュートリアルは、コンピューターに何かを描画するように指示するコードの書き方を示しています。

はい。これは、それらを利用するには描画する必要があるためです。

最近のゲームでは、Zbrush、Maya、3ds Max などのソフトウェアを使用してすべてがモデル化されています。

この時点で、モデルは数字の大きなリストと、他の数字がある種の幾何学をどのように形成するかを示す追加の数字だけで構成されています。これらの数値は、すぐに使用できるイメージではありません。

モデルは質感があり、すぐに使用できます。

それらは数字の集まりであり、テクスチャリングを制御するいくつかの追加の数字があります。テクスチャ自体は単なる数字です。

モデルを描画するアニメーション ループを作成するだけでよいようです。

そして、この絵はどのように描かれると思いますか? 「ここにモデルがあり、それを表示する」という魔法の機能はありません。一つには、モデルを構成する数字が何らかの意味を持つ可能性があるためです。したがって、何らかのプログラムでこれらの数値に意味を与える必要があります。それがレンダラーです。

コードを実際にプログラムしてすべての小さなものを描画するのではなく、繰り返し更新します。

繰り返しますが、魔法の「描く」機能はありません。モデルを描画するには、各数値を調べて、それらを GPU への描画コマンドに変換する必要があります。

これは非常に時間がかかり、モデルが役に立たなくなります。

モデルがOpenGLへのコマンドの発行を制御しているものである場合、モデルはどのように役に立たないのですか。それとも、実際にモデルを「作成」するために OpenGL が使用されていると思いますか?

では、OpenGL や Direct 3D は、ビデオ ゲームや 3D アートとの関係でどこに登場するのでしょうか?

モデラーから離れて保存されている 3D モデルの数値を、見やすいものに変換するために使用されます。

すべてのグラフィックスがすでに作成されている場合、それらについて何が重要なのか

モデルが完成したとき、グラフィックスはまだ作成されていません。作成されるのはモデルと、テクスチャとシェーダーの形式の補助データであり、プログラムの実行時にリアルタイムでグラフィックに変換されます。

ロードして描画するだけですか?

繰り返しますが、読み込まれた後のモデルは単なる数字の集まりです。そして描画とは、これらの数値を何かに変換することを意味し、描画コマンドをグラフィック プロセッサ (GPU) に送信する必要があり、これは OpenGL や Direct3D などの API を使用して行われます。

主にシェーダーやエフェクトに使用されますか?

これらは、3D モデリング プログラム (Blender、Maya、ZBrush) によって生成された数値を実際の画像に変換するために使用されます。

于 2012-07-27T23:02:22.177 に答える
3

データがあります。モデルのように、頂点、法線、およびテクスチャを使用します。@datenwolf が上で述べたように、これらはすべてハード ドライブまたは RAM にある単なる数字であり、画面上の色ではありません。

CPU (作成したプログラムが実行される場所) は、画面と直接対話できません。代わりに、描画するデータを GPU に送信します。次に、GPU がデータを描画します。OpenGL や Direct3D などのグラフィックス API を使用すると、CPU で実行されているプログラムがデータを GPU に送信し、GPU がデータを描画する方法をカスタマイズできます。これは大まかな単純化ですが、概要が必要なだけのように思えます。

最終的に、すべてのグラフィック プログラムはグラフィック API を通過する必要があります。たとえば、画像を描画する場合、GPU に画像を送信すると、GPU がそれを画面に描画します。テキストを描画しますか?データを GPU に送信します。GPU が描画します。コードは画面と対話できないことに注意してください。OpenGL または Direct3D を介して GPU と通信でき、GPU はデータを描画します。

于 2012-08-05T04:09:56.523 に答える
2

OpenGL と DirectX が登場する前は、ゲームは使用しているグラフィック カードに応じて特別な命令を使用する必要がありました。新しいゲームを購入したときは、カードがサポートされているかどうか、またはゲームを使用できないかどうかを慎重に確認する必要がありました。

OpenGL と DirectX は、グラフィックス カードに対する標準化された API です。ライブラリは、カードの製造元から提供されます。それらが仕様に従っている場合、ゲームが動作することが保証されます (それらも同じ仕様に従っている場合)。

于 2012-07-27T23:11:54.623 に答える