0
点赞
收藏
分享

微信扫一扫

glBindTexture(GL_TEXTURE_2D, 0) glBindFramebuffer(GL_FRAMEBUFFER, 0) glBindTexture(GL_TEXTURE_2D, 0)


glBindTexture(GL_TEXTURE_2D, 0) glBindFramebuffer(GL_FRAMEBUFFER, 0) glBindTexture(GL_TEXTURE_2D, 0) 含义详解


void glBindTexture(GLenum  target, GLuint  texture);

官方解释:https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glBindTexture.xml

The value zero is reserved to represent the default texture for each texture target. 


texture 指明一张纹理的名字

在每个纹理目标中,0被保留用以代表默认纹理。


当一张纹理被第一次绑定时,它假定成为指定的目标类型。例如,一张纹理若第一次被绑定到GL_TEXTURE_1D上,就变成了一张一维纹理;若第一次被绑定到GL_TEXTURE_2D上,就变成了一张二维纹理。

由于OpenGL是状态机,当使用glBindTexture绑定一张纹理后,如果不再绑定新的纹理,则OpenGL之后的操作都会对应此纹理,当一个纹理与目标绑定时,该目标之前的绑定关系将自动被打破。


纹理名称与相应的纹理内容位于当前GL rendering上下文的共享对象空间中。


glBindVertexArray

https://www.khronos.org/opengl/wiki/GLAPI/glBindVertexArray

https://www.khronos.org/registry/OpenGL-Refpages/es3.0/

void glBindVertexArray(GLuint array);

zero to break the existing vertex array object binding.

 zero to bind the default vertex array object binding


glBindFramebuffer

https://www.khronos.org/opengl/wiki/GLAPI/glBindFramebuffer

https://www.khronos.org/registry/OpenGL-Refpages/es3.0/

void glBindFramebuffer(GLenum target, GLuint framebuffer);

In order that access to the default framebuffer is not lost,

zero to break the existing binding of a framebuffer object to target .


glBindRenderbuffer

https://www.khronos.org/opengl/wiki/GLAPI/glBindRenderbuffer

zero to break the existing binding of a renderbuffer object to target .


glBindBuffer

void glBindBuffer(GLenum target, GLuint buffer);

https://www.khronos.org/opengl/wiki/GLAPI/glBindBuffer

值零保留,但每个缓冲区对象目标没有默认缓冲区对象。 相反,缓冲区设置为零有效地解除绑定先前绑定的任何缓冲区对象,并恢复该缓冲区对象目标的客户端内存使用(如果该目标支持的话)。 


常用的恢复OpenGL默认状态的代码:

glBindVertexArray(0);//将VAO绑定到默认的VAO处,一般用于打破之前的VAO绑定关系,使OpenGL的VAO绑定状态恢复到默认状态
glBindFramebuffer(GL_FRAMEBUFFER, 0);//将framebuffer绑定到默认的FBO处,一般用于打破之前的FBO绑定关系,使OpenGL的FBO绑定状态恢复到默认状态。
glBindTexture(GL_TEXTURE_2D, 0); //将2D纹理绑定到默认的纹理,一般用于打破之前的纹理绑定关系,使OpenGL的纹理绑定状态恢复到默认状态。
glBindRenderbuffer(GL_RENDERBUFFER, 0); //将渲染buffer绑定到默认的渲染buffer,一般用于打破之前的渲染buffer绑定关系,使OpenGL的渲染buffer绑定状态恢复到默认状态。
glBindBuffer(GL_ARRAY_BUFFER, 0);//将顶点数据buffer和之前的绑定关系进行解绑 用于打破之前的顶点数据buffer的绑定关系,使OpenGL的顶点数据buffer绑定状态恢复到默认状态。
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);//将顶点索引数据buffer和之前的绑定关系进行解绑 用于打破之前的顶点索引数据buffer的绑定关系,使OpenGL的顶点索引数据buffer绑定状态恢复到默认状态。








举报

相关推荐

0 条评论