glGenTextures - 纹理数量是否有限制?

Zil*_*num 11 opengl graphics

可以在OpenGL中创建的纹理数量是否有限制 - 也就是说,使用glGenTextures?

我知道GL有一些限制,例如.可以在片段着色器中使用的纹理数.但是,我无法找到任何可用的整数"纹理名称"总数的文档.

Luc*_*uca 18

glGenTextures的唯一限制是由纹理名称(GLint)的位宽给出,它是32位; 实际上纹理名称的数量可以很大,以至于在生成纹理名称时可能永远不会有问题.

纹理的限制是图形系统内存的限制.仅当应用程序使用glTexImage2D(以及其他glTexImage*函数,如果可用)提交纹理数据时,OpenGL实现才知道纹理大小和格式,它指定宽度,高度和内部纹理格式:使用这些参数可以确定所需的内存存储纹理数据.

要检查错误,您应该使用glGetError查询OpenGL错误,如果操作无法分配所需的内存,则返回GL_OUT_OF_MEMORY.glGenTexturesglTexImage2D等也可以返回此错误.

glTexImage2D等最有可能返回此错误,因为纹理分配所需的内存远大于标记所使用的纹理名称所需的内存.

  • 另外,如果你想看看是否可以创建一个纹理,在调用`glTexImage`时使用`GL_PROXY_TEXTURE_*D`进行一种干运行.这样做可以避免错误.这是否有价值,我不确定,因为我没有_think_`glTexImage`失败可能会导致任何严重的问题,但它仍然值得了解(特别是如果你想测试系统功能). (4认同)