嗨,我目前正在模拟一组任天堂Switch游戏,显然我收到了427x240 6张面孔的立方体贴图纹理。在该纹理上执行glTextureStorage2D时,我收到此错误:"GL_INVALID_VALUE生成错误。纹理尺寸无效。我在 OpenGL 规范中到处查找,但找不到符合这种情况描述的限制。此外,我在我们的 Vulkan 后端进行了测试,它没有遇到任何验证层,并且毫无困难地接受了它。
我做过的其他事情:
- 我已经将这些数据一直追溯到TIC(TIC是NVIDIA Maxwell 2nd Gen中的纹理描述符(。数据与模拟 GPU 真正想要的一致。我还跟踪了 Vulkan 后端中的纹理,所有数据都是一致的。
- 我已经检查了是否存在类似的问题,找不到任何问题。
我应该向 NVIDIA 报告驱动程序错误还是遗漏了什么?
在 NVIDIA GTX 1060 上使用 OpenGL 4.3。(如果有兴趣,可以使用 Vulkan 1.1(。
我收到 427x240 的立方体贴图纹理
立方体贴图面必须是正方形。它们不必是二的幂,但它们必须是正方形。
是的,即使在 Vulkan 中:如果您创建"CUBE_COMPATIBLE"2D 图像,那么它的宽度和高度必须相等。如果您的验证层没有捕获到这一点,则它们有问题,或者您为其指定了正确的值,同时为 OpenGL 指定了错误的值。
事实上,我很惊讶Switch的GPU允许这样做。甚至AMD的Mantle也需要方形立方体贴图面。