私は次のように私のスカイボックス用のキューブマップテクスチャを指定しています: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));
texData
はunsigned char*
vector
です。
Visual Studio Debuggerを使用すると、各行に約4msの時間がかかることがわかりました。したがって、6行でキューブマップテクスチャを指定すると、合計で約20〜25msかかります。私はメインループの各反復でこのキューブマップテクスチャを更新し、メインループをかなり遅くしています。 Skyboxは伝統的に静的であることは知っていますが、私は360ビデオビューアを作成しているので、私のアプリケーションではSkyboxを更新する必要があります。
もっと速いキューブマップテクスチャを指定する別の方法はありますか?私は既にOpenGLのドキュメントをチェックしていますが、より速い方法はありません。
UPDATE:私は0th
反復を除くすべての反復のためにglTexSubImage2D
でglTexImage2D
を交換し、現在は6本のglTexSubImage2D
線で撮影した合計時間が5msの下にあります。これは私にとっては満足ですが、技術的にはまだ答えがないので質問を開いたままにしておきます。
ピクセルバッファオブジェクトを見たことがありますか? – BDL
"*メインループの各反復でこのキューブマップテクスチャを更新します*"あなたは 'glTexImage2D'を使ってそれを更新していますか' glTexSubImage2D'ですか? –
@NicolBolas私は 'glTexImage2D'を使います。 'glTexSubImage2D'を試してみましょう。改善があれば更新します。 – db7638