2017-10-27 12 views
1

私は次のように私のスカイボックス用のキューブマップテクスチャを指定しています:OpenGLでキューブマップのテクスチャを指定する方法はありますか?

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 0, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(0)); 
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 1, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(1)); 
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 2, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(2)); 
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 3, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(3)); 
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 4, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(4)); 
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 5, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texData(5)); 

texDataunsigned char*vectorです。

Visual Studio Debuggerを使用すると、各行に約4msの時間がかかることがわかりました。したがって、6行でキューブマップテクスチャを指定すると、合計で約20〜25msかかります。私はメインループの各反復でこのキューブマップテクスチャを更新し、メインループをかなり遅くしています。 Skyboxは伝統的に静的であることは知っていますが、私は360ビデオビューアを作成しているので、私のアプリケーションではSkyboxを更新する必要があります。

もっと速いキューブマップテクスチャを指定する別の方法はありますか?私は既にOpenGLのドキュメントをチェックしていますが、より速い方法はありません。

UPDATE:私は0th反復を除くすべての反復のためにglTexSubImage2DglTexImage2Dを交換し、現在は6本のglTexSubImage2D線で撮影した合計時間が5msの下にあります。これは私にとっては満足ですが、技術的にはまだ答えがないので質問を開いたままにしておきます。

+4

ピクセルバッファオブジェクトを見たことがありますか? – BDL

+1

"*メインループの各反復でこのキューブマップテクスチャを更新します*"あなたは 'glTexImage2D'を使ってそれを更新していますか' glTexSubImage2D'ですか? –

+0

@NicolBolas私は 'glTexImage2D'を使います。 'glTexSubImage2D'を試してみましょう。改善があれば更新します。 – db7638

答えて

0

glTexImageは、呼び出すたびに遅くなります。ドライバ側でメモリを割り当て、画像データをフリムCPUからGPUドライバにコピーします。バス上で発生します。 glTexSubImageは毎回メモリを割り当てませんが、最初にメモリに割り当てられたポインタを保持し、後でそのメモリに直接コピーします。私は、OpenGLが異なるテクスチャレベルを作成する可能性があることを言及しているフィルタリングフラグに応じて考える。 glTexStorage2dをレベル1で使用してみてください。また、simole関数を持つSOILを使用してキューブマップをロードしてみてください。あなたが試みることができるもう1つのオプションは、テクスチャを圧縮してからプロファイルすることです。このオプションは最適な方法を与えるはずです。

-3

glTexImage2Dは、CPUメモリからGPUメモリに大量のdqtaをコピーしているため、処理速度が遅いです。画像がビデオデコーダから来ている場合は、GPUメモリに既に存在する可能性があります。そのような場合、OpenGL拡張を使ってテクスチャリングすることができます。

これらはプラットフォーム固有の傾向があります。

関連する問題