创建和使用 OpenGL 对象而不生成其名称是否合法?

问题描述 投票:0回答:1

通常,诸如纹理、帧缓冲区、着色器或顶点数组之类的对象是通过首先生成名称、然后绑定它、然后设置参数来设置的:

GLuint texture_id;
glGenTextures(1, &texture_id);
glBindTexture(GL_TEXTURE_2D, texture_id);
glTexParameteri(GL_TEXTURE_2D, ...);
glTexImage2D(GL_TEXTURE_2D, ...);

值得注意的是,

glGenTextures
实际上并没有创建纹理对象,只是为其创建一个名称(ID号),并将其标记为已使用。自己选择一个已知未使用的数字是否也合法,如下面的代码所示?

// no other textures have been created so all numbers are available
glBindTexture(GL_TEXTURE_2D, 42);
glTexParameteri(GL_TEXTURE_2D, ...);
glTexImage2D(GL_TEXTURE_2D, ...);
opengl
1个回答
0
投票

在兼容性上下文中,您可以只组成一个(非零)数字并假装它是一个对象。在核心上下文中,您必须生成它们。

© www.soinside.com 2019 - 2024. All rights reserved.