2017-03-04 9 views
1

キューマップマップの配列テクスチャでglTextureStorage3Dを呼び出すときに、GL_INVALID_VALUEが発生します。私のコードは非常に抽象化されますが、エラーをGLにテクスチャ作成から生GLコードをダンプすると、これに沸く:GL_INVALID_VALUE(キューマップマップ配列の場合)

[SafeGL DUMP] glCreateTextures(glTargets[uint32_t(type)], 1, &id_) // glTargets[uint32_t(type)] = GL_TEXTURE_CUBE_MAP_ARRAY 
[SafeGL DUMP] glTextureParameteri(id_, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) 
[SafeGL DUMP] glTextureParameteri(id_, GL_TEXTURE_MAG_FILTER, GL_LINEAR) 
[SafeGL DUMP] glTextureStorage3D(id_, mipLevels, glFormats[uint32_t(format_)], width, height, depth) // mipLevels = 1, glFormats[uint32_t(format_)] = GL_RG16F, width = 1024, height = 1024, depth = 4 
/!\ GL ERROR 501: GL_INVALID_VALUE -- Breaking to debugger. 

GL仕様は、幅、高さ、または深さがある場合」INVALID_VALUEエラーが発生したことを指定します負。"私の場合にはそれがない場合を除き...

私の唯一の推測では、私は、ベンダー固有の(NVIDIA 375.70ドライバのGL 4.4コンテキスト)だ文書化されていないエラーが発生していますか、私は完全に間違って何かをやっているということですが、それから私は何が完全に失われています。

EDIT:ちょうど378.66に更新されたドライバ、無駄に。

+0

'glTextureStorage3D'と' glCreateTextures'はOpenGL 4.5の関数ですが、4.4のコンテキストを作成しています。 – SurvivalMachine

+0

@ SurvivalMachine:4.4が要求されたフォーマットですが、ドライバが4.5を与えた可能性があります。そうしないと、 'glCreateTextures'は動作しません。 – peppe

+0

@peppeうん、それだった! glTexStorage3Dの仕様全体を細心の注意を払って読んでいます。解決済みとしてマークする: – xtrium

答えて

5

depthは6で割り切れないという問題があります。キューブマップ配列を使用する場合、レイヤーを扱わずに「レイヤーフェイス」を扱います。

hereも参照してください。

関連する問題