C++ 什么是OpenGL';指定纹理ID的方法?

C++ 什么是OpenGL';指定纹理ID的方法?,c++,opengl,textures,C++,Opengl,Textures,我有一个函数加载纹理,并返回新生成的GLuint。我需要知道如果它无法加载纹理,我应该返回什么。因此,如果glGenTextures在1开始分配纹理ID,我可以返回GL\u FALSE,等等。这回答了您的问题: 它是定义的实现 您不需要知道,也不应该关心实现如何为任何对象分配名称(或您所称的ID)。您只需要跟踪表示对象的整数,这样就可以绑定它,并在处理完后释放它 如果您还没有记录表示纹理的数字,则始终可以调用glIsTexture()来查找 glGenTextures不会不提供新名称,除非系统内

我有一个函数加载纹理,并返回新生成的
GLuint
。我需要知道如果它无法加载纹理,我应该返回什么。因此,如果
glGenTextures
在1开始分配纹理ID,我可以返回
GL\u FALSE
,等等。

这回答了您的问题:


它是定义的实现

您不需要知道,也不应该关心实现如何为任何对象分配名称(或您所称的ID)。您只需要跟踪表示对象的整数,这样就可以绑定它,并在处理完后释放它

如果您还没有记录表示纹理的数字,则始终可以调用
glIsTexture()
来查找


glGenTextures
不会不提供新名称,除非系统内存已耗尽。
0
的名称将永远不会被使用,并且是纹理的保留名称。所有名称都将是非零的无符号整数。

谢谢,这就解决了我的问题。但是它仍然不能回答这个问题。@Jay,我想你的问题的答案是它取决于实现我见过纹理0被指定了一个内部默认纹理(例如纯白色)的情况。@Jim,如果这是真的,它会使另一个答案无效。这真的取决于openGL的实现。好吧,在我的情况下它仍然有效。对我来说重要的是,
glGenTextures
不返回0。我返回了。两次。你的问题不清楚。我会修改我的答案,但请更具体地重写你的问题。@Jay:你的实际问题隐藏在许多或多或少无关的绞尽脑汁之中。更具体一些会有所帮助。也就是说,如果您详细说明了“无法加载纹理”的含义,那么就更容易理解为什么您认为需要了解
glGenTextures
@Jay的分配方案:您的特定问题(标题中)在这里得到了回答。它还提到0将作为失败代码工作,但实际上,没有任何东西说您应该能够在GLuint中存储失败@greyfade:real挑剔:glGenTextures不返回正的非零整数,它返回非零无符号整数。(即,2^整数位\u宽度中只有1个值无效)。点为-1将不能作为无效的返回值。