2012-05-10 8 views

答えて

1

重要なことは、OpenGL(ES)がクライアント/サーバーモデルとして構築されているということです。つまり、通常「CPU」はクライアントで、「GPU」はサーバーです。

これら2つのメモリには異なる記憶領域があります。 「CPU」から「GPU」に送る必要があるいくつかの頂点を描画したいときには、これは通常、システムメモリからGPUメモリにデータをコピーすることを含みます。 あなたはそれを繰り返し送信して描画を行う必要があります...それはもちろん遅いです。

VBOは、これらの頂点データをGPUに保存し、単にコピーを避ける方法です。コマンド "Draw"を追加するだけで、データはシステムメモリからではなくGPUメモリからフェッチされます。それははるかに速くなります。

+0

ありがとう、ちょうど私が必要なもの。テクスチャにも適用されますか?バインドされたテクスチャを描画するたびにGPUにコピーされますか? – RawCode

+1

glTexImage *またはglCopyTexImage ...スタイルの関数でGPUにテクスチャが送信されます。だから、テクスチャはVBOSと似ていますが、VBOSはその使い方が少し一般的です。 CUDA/OpenCLを見ると、GPUがますます一般的になり、メモリプールにフルアクセスできるようになります。ユーザーがカスタムで使用できるようになります。 – fen

+0

@fen「glCopyTexImage」は、フレームバッファからテクスチャイメージを取得するため、CPU-GPUコピーを発生させるべきではありません。 –

0

テクスチャオブジェクトとバッファオブジェクトは、最終的に互いに関係しません。どんなレートでも直接関係はありません。

しかし、いくつかの類似点があります。これらは両方ともOpenGLによって割り当てられたメモリを表します。したがって、アップロードするデータはコピーです。テクスチャ。

関連する問題