如何将 glClearTexImage 用于打包的 depth/stencil 纹理?

How to use glClearTexImage for packed depth/stencil textures?

是否可以在 OpenGL 中使用 glClearTexImage 清除压缩的 depth/stencil 纹理?如果是,怎么做?

我正在使用像素格式 GL_FLOAT_32_UNSIGNED_INT_24_8_REV 的多重采样纹理。正在尝试使用

清除纹理
glClearTexImage(textureId, 0, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_FLOAT, nullptr);

产生错误

GL_INVALID_OPERATION error generated. <format> must be GL_DEPTH_STENCIL for depth-stencil textures.

depth/stencil 纹理在此错误消息中的事实让我相信这应该是可能的。

如果我将格式参数更改为 GL_DEPTH_STENCIL,我会收到错误消息

GL_INVALID_OPERATION error generated. Texture type and format combination is not valid.

我是不是混淆了参数?还是我错过了清理包装纹理不在规格范围内?使用简单的 GL_DEPTH_COMPONENT32F 而不是打包格式可以完美地工作。我还尝试创建一个仅包含深度分量的纹理视图,并将其 id 作为第一个参数提供给 glClearTexImage,但是会产生相同的错误。

我正在 Windows 10 中的 Nvidia Titan RTX 上的 OpenGL 4.6 上下文中对此进行测试。

我混淆了内部格式和数据类型,这就是我使用错误参数的原因。压缩的 depth/stencil 纹理可以用

清除
glClearTexImage(textureId, 0, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, nullptr);