博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绑定函数【OpenGL】关于OpenGL中Bind函数的理解
阅读量:6553 次
发布时间:2019-06-24

本文共 2140 字,大约阅读时间需要 7 分钟。

废话就不多说了,开始。。。

    在OpenGL中,总是会遇到相似下面的绑定语句:

glBindTexture(GL_TEXTURE_2D, renderTex);glBindFramebuffer(GL_FRAMEBUFFER, fboHandle);glBindRenderbuffer(GL_RENDERBUFFER, depthBuf);……

    

始终都不是很明确这是什么意思,它们到底是绑定什么到什么上呢?绑定了又怎么样呢?明天看了点东西,于是把自己的懂得写下来,如果有不对的还请赐教。

    下面,就以为例,其他的应当和它相似。

    

    

    

glBindTexture函数

    

    

名称

    

glBindTexture — 将一个命名的纹理绑定到一个纹理目标上

    

    

    

C定义

    

void glBindTexture(GLenum  target, GLuint  texture);

    

    

    

参数

    

    

target

    

指明确纹理要绑定到的目标。必须是下面中的一个:GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BUFFER, GL_TEXTURE_2D_MULTISAMPLE 或者 GL_TEXTURE_2D_MULTISAMPLE_ARRAY

    

    

    

texture

    

指明一张纹理的名字

    

    

    

描述

    每日一道理
如果你们是蓝天,我愿做衬托的白云;如果你们是鲜花,我愿做陪伴的小草;如果你们是大树,我愿做点缀的绿叶……我真诚地希望我能成为你生活中一个欢乐的音符,为你的每一分钟带去祝福。

    

glBindTexture答应我们向GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BUFFER, GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY 绑定一张纹理。当把一张纹理绑定到一个目标上时,之前对这个目标的绑定就会失效。

    

纹理名字是一个无符号整数。值0是被保留的,它代表了每一个纹理目标的默认纹理。对于以后的GL渲染上下文中的共享对象空间,纹理名称以及它们对应的纹理内容是局部的;只有在显式开启上下文之间的共享,两个渲染上下文才可以共享纹理名称。
当一张纹理被第一次绑准时,它假设成为指定的目标类型。例如,一张纹理若第一次被绑定到GL_TEXTURE_1D上,就变成了一张一维纹理;若第一次被绑定到GL_TEXTURE_2D上,就变成了一张二维纹理。

    

    

当一张纹理被绑定后,GL对于这个目标的操作都会影响到这个被绑定的纹理。也就是说,这个纹理目标成为了被绑定到它下面的纹理的别名,而纹理名称为0则会引用到它的默认纹理。

    

当使用glBindTexture绑定一张纹理后,它会始终保持活泼状态知道另一张纹理被绑定到同一个目标上,或者这个被绑定的纹理被删除了(使用glDeleteTextures)。

    

    

我们可以这样懂得,GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D等就是很多变量,当使用glBindTexture函数,我们就会使用一张纹理对这些变量进行赋值,而之后我们非常可能还会调用下面相似的函数:
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,512,512,0,GL_RGBA,GL_UNSIGNED_BYTE,NULL);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
这些函数里头的GL_TEXTURE_2D就等价与我们之前绑定的纹理,所以我们对GL_TEXTURE_2D的操作就会影响到之前的纹理,这和C++中的引用有点相似。

文章结束给大家分享下程序员的一些笑话语录: 关于编程语言

如果 C++是一把锤子的话,那么编程就会变成大手指头。
如果你找了一百万只猴子来敲打一百万个键盘,那么会有一只猴子会敲出一 段 Java 程序,而其余的只会敲出 Perl 程序。
一阵急促的敲门声,“谁啊!”,过了 5 分钟,门外传来“Java”。
如果说 Java 很不错是因为它可以运行在所有的操作系统上,那么就可以说 肛交很不错,因为其可以使用于所有的性别上。

--------------------------------- 原创文章 By

绑定和函数
---------------------------------

转载地址:http://mcjco.baihongyu.com/

你可能感兴趣的文章
使用PHP CURL的POST数据
查看>>
struts2:表单标签
查看>>
mysql字符串截取
查看>>
ASP.NET MVC3 通过Url传多个参数方法
查看>>
遭遇sql server 2005 启动包未能正确加载需要重新安装错误,重装.NET FRAMEWORK经历分析...
查看>>
OAF_VO系列3 - Binding Style绑定方式
查看>>
《Essential C++》读书笔记 之 基于对象编程风格
查看>>
Sublime Text2 常用快捷键
查看>>
ASP.NET MVC上传文件----uploadify的使用
查看>>
VirtualBox创建虚拟电脑、执行Genymotion模拟器报错
查看>>
新生儿操作系统操作手册
查看>>
linux下如何安装charles
查看>>
正在载入数据中效果
查看>>
Js模型和封装
查看>>
第二章 Java浮点数精确计算
查看>>
apiCloud实现加载更多效果,基本完美~
查看>>
Redis基准
查看>>
如何使用openssl生成RSA公钥和私钥对
查看>>
当我们安装使用时,会出现eclipse启动不了,出现“Java was started but returned exit code=13......”的问题...
查看>>
2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
查看>>