Java GlgenTexture、glGenBuffers的有效索引范围
我正在用Android编写OpenGL 1.1 ES,即使用固定管道 我使用的是Java GlgenTexture、glGenBuffers的有效索引范围,java,android,opengl-es,Java,Android,Opengl Es,我正在用Android编写OpenGL 1.1 ES,即使用固定管道 我使用的是glGenTextures和glGenBuffers,它们在数组中返回索引(我一次只对一个纹理/缓冲区使用它们)。此索引的保证有效(和无效)范围是多少 根据经验,我观察到有效的指数是从1开始的,但文档中没有提到任何关于它的内容。值0是否保证无效 我需要它,因为有时我需要检查纹理/缓冲区是否已经加载。如果0是有效的,我需要将我的值初始化为-1(以便能够检测它们是否未初始化/卸载),但是如果0是无效的纹理/缓冲区名称,那
glGenTextures
和glGenBuffers
,它们在数组中返回索引(我一次只对一个纹理/缓冲区使用它们)。此索引的保证有效(和无效)范围是多少
根据经验,我观察到有效的指数是从1开始的,但文档中没有提到任何关于它的内容。值0是否保证无效
我需要它,因为有时我需要检查纹理/缓冲区是否已经加载。如果0是有效的,我需要将我的值初始化为-1(以便能够检测它们是否未初始化/卸载),但是如果0是无效的纹理/缓冲区名称,那么事情就更简单了
在Android中,填充了int[]
,但在OpenGL ES API中,我看到有GLUint
值。所以我担心(理论上)在我的Android程序中,即使初始化为-1也可能不正确,因为(理论上)uint可以返回0xFFFFFF
那么什么是有效范围,什么是无效范围/值,我可以确定它不代表有效的纹理/缓冲区名称(索引)?如果您使用的是OpenGL ES 1.1,您可以使用
GLES11.glIsTexture(int)
检查纹理有效性。谢谢!根据glIsTexture(纹理)的描述,似乎零永远不是纹理名称:“如果纹理为零,或者是当前不是纹理名称的非零值,或者如果发生错误,glIsTexture返回GL_FALSE。”我想知道硬件缓冲区是否存在类似的函数(以了解是否也适用相同的规则)。是的,我找到了一个缓冲区。它的描述类似:“如果缓冲区为零,…”,即如果参数为0,它总是返回false。我认为这意味着我们可以100%确定零值永远不是有效的纹理名称或缓冲区对象名称,对吗?