带有立方体贴图数组的glTextureStorage3D上的GL_INVALID_VALUE

时间:2017-03-04 13:23:18

标签: c++ opengl 3d

在立方体贴图阵列纹理上调用glTextureStorage3D时,我得到一个GL_INVALID_VALUE。我的代码非常抽象,但是将纹理创建中的原始gl代码转储到gl错误归结为:

[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上下文),要么我做了一些完全错误的事情,但后来我完全失去了什么

有什么想法吗?

编辑:刚刚将驱动程序更新为378.66,但无济于事。

1 个答案:

答案 0 :(得分:5)

问题是depth不能被6整除。当你使用立方体贴图数组时,你不处理图层,你处理“图层面”。

另见here