7

Quake用のマップレンダラーを実装しています。現在、頂点の配列を実行して、一度に1つずつ送信しています。頂点配列を使用することで、頂点をバッチで送信することでレンダリングプロセスを大幅に高速化できると言われました。これで、ディスプレイリスト、最後にVBOまたは頂点バッファオブジェクトを確認しました。VBOは、クライアント/サーバー通信に関して大きな利点について言及しています。サーバーではなくクライアントを開発するだけの場合でも、VBOは私が行っていることに適用できますか?

迅速な頂点処理のために現在OpenGLスペクトルで使用されているゲームは何ですか?

4

2 に答える 2

10

彼らが「クライアント/サーバー」通信と言うとき、彼らはインターネットネットワークについて話していません。

  • クライアント=CPU
  • サーバー=GFXハードウェア

これらは2つの別個のハードウェアです。それらは(通常)同じマザーボードに接続されていますが、それでも相互に通信する必要があります。グラフィックカードは通常、マザーボードのメインメモリにアクセスできないため、頂点(およびテクスチャ、インデックスなど)を実際にグラフィックデバイスに送信する必要があります。

短編小説:頂点バッファオブジェクトを使用します。静的データ(Quakeマップなど)の場合、これ以上の方法はありません。頂点はグラフィックスデバイス(サーバー)に一度送信され、そこにとどまります。頂点ごとに(のようなものを使用して)物事を描画すると、頂点はすべてのフレームglBegin(GL_TRIANGLES)に送信されます。これは、ご想像のとおり、かなり非効率的です。

于 2011-06-27T18:29:55.350 に答える
3

VBOは現代の答えです。

OpenGLの意味での「クライアント」と「サーバー」という用語を誤解しないでください。これは、Apache(HTTPサーバー)とChrome(HTTPクライアントなど)の違いではありません。OpenGL用語では、クライアントはあなた/あなたのコードです。サーバーはグラフィックスドライバー/ハードウェアです。

VBOを使用すると、頂点情報をグラフィックハードウェアに保存できます。これにより、使用するたびに各頂点がカードに送信されるのを防ぐことができます。これは大きな利点です。

あなたは頂点処理について質問しますが、あなたの質問に答えるには、あなたが何を意味するのかを明確にする必要があります。グラフィックカードに頂点を取得することを意味する場合、答えはVBOです。頂点データの操作について話している場合、これはシェーダーを介して効率的に実現できます。

于 2011-06-27T18:30:23.043 に答える