关于opengl的ActiveTexture以及bindXxx函数的分析
Posted mooniscrazy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于opengl的ActiveTexture以及bindXxx函数的分析相关的知识,希望对你有一定的参考价值。
1.GLBindxxx,意思就是,将xxx指定为当前对象,之后的操作都是针对这个xxx进行。 比如,GLBindBuffer(bufferTarget, bufferId),就是指定bufferid和该buffer的类型。 void glBufferData( GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);,就是绑定buffer的数据。 经过试验,绑定完成之后,data占用的内存是可以销毁的。 所以,可以得出一个结论,glBufferData函数调用的时候,应该会发生数据传送。 可能是传送到显卡,也可能是传送给驱动层,然后由驱动层管理。因为游戏使用的总的buffer数,可能会超过显存数,因此显卡可能会有调度机制来管理,比如把暂时不用的buffer从显存中释放,转移到系统内存,等需要的时候,再交换回去。 2.有个函数,不怎么引人注目,但它跟glActiveTexture关系很大 ActiveTexture的时候,要指定TextureUnit,如Texture0,Texture1,这个是怎么来的?按顺序,还是可以直接Active高序号的texture,比如只有一个TExture,但我想ActiveTexture(GL_TEXTURE4)可不可以? 答案是,可以。 Texture,都是以Uniform的方式存在的。 假定某个它的名字是TExture1,通过glGetUniformLocation得到的location是texture1Location 那么,glUniform1i(texture1Location,4),就可以指定这个Texture4指向这个Texture 之后,就调用glActiveTexture(GL_TEXTURE4); 本文得到两个结论: 1.glBufferData会发生从cpu到显卡的数据传送 2.glUniformi设置Texture变量的值,是指定Texture Unit,而不是设置glGenTexture得到的texure对象的int值
以上是关于关于opengl的ActiveTexture以及bindXxx函数的分析的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅关于OpenGL的着色器的向量和矩阵分类的访问方式: xyzw/rgba/stpq以及数组下标
我的OpenGL学习进阶之旅关于OpenGL的着色器的向量和矩阵分类的访问方式: xyzw/rgba/stpq以及数组下标
关于 OpenGL 的问题以及将 C 转换为 C++ 的过程
[转载]矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先