美文网首页
glActiveTexture和glBindTexture的关系

glActiveTexture和glBindTexture的关系

作者: 正向反馈 | 来源:发表于2018-07-07 19:13 被阅读0次

今天在做glsl渲染yuv图像时,因为对glActiveTextureglBindTexture的不熟,遇到了麻烦。经过试验,有了新的理解,并基于此理解解决了问题。

之前用到纹理,都是传GL_RGB或者GL_RGBA类型的数据进去的,只需要使用一张纹理,完全不用设置glActiveTexture的,所以对glActiveTexture的理解很浅

渲染yuv就不同了。
ffmpeg解码出来的yuv一般是以yuv420p的格式,分别存放在AVFrame->data二维数组中。其中

data[0] => y
data[1] => u
data[2] => v

这样格式的数据,需要使用三张纹理,分别传输到显卡中。

glBindTexture

我的理解是,glBindTexture(GL_TEXTURE_2D, tex_id) 有以下几个涵义:

  1. 表示 tex_id是一个二维纹理,设置过一次后,tex_id的类型就不可变了
  2. opengl采用状态机的设计,glBindTexture告诉opengl说,我选择tex_id作为当前纹理,后续对纹理的操作都将作用在此纹理上。

glActiveTexture

我们已经通过·glGenTextures在显卡上开辟了一张纹理, 然后使用glBindTexture将该纹理选为当前操作目标, 接着也调用了glTexParameter`函数族设置了纹理的属性

那么问题来了,纹理是怎么和glsl上的sampler2D关联起来的?

假如

假如是自己来设计,会怎么设计:

glGenTextures生成的tex_id赋值给sampler2D变量就好了

实际上

我也不理解为什么。实际上opengl在这块关联上绕了下路。
纹理与sampler2D变量的关联是通过索引来关联的。
我们可以给sampler2D变量赋int值。

GLuint tex_loc = glGetUniformLocation(program, "tex");
glUniform1i(tex_loc, 1);

然后

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, tex_id);

将纹理与GL_TEXTURE1关联起来。

tex_idGL_TEXTUR1关联
GL_TEXTURE1又与值为1sampler2D变量关联
所以tex_id 就这样间接地与sampler2D变量关联了

Q&A

平时使用单张纹理怎么不需要glActiveTexture?

sampler2D默认值为0,纹理也默认与GL_TEXTURE0关联。

相关文章

  • glActiveTexture和glBindTexture的关系

    今天在做glsl渲染yuv图像时,因为对glActiveTexture和glBindTexture的不熟,遇到了麻...

  • glActiveTexture和glBindTexture

    在openGL中,存在一系列的texture unit,通过 glActiveTexture激活当前的textur...

  • 和关系,建立真正的关系

    生命如此宝贵,又何必再浪费时间去迎合别人的口味呢? 切断生活中那些不真诚的人际关系,管他什么亲戚,管他和我有没有血...

  • 最好的关系和最坏的关系

    一次聚会的时候,老友丁聊起现在的年轻人一块吃饭时会自然而然地选择AA制,不像老派的人那样非得抢着买单,并说我们以后...

  • 我们和世界的关系就是和自己的关系

    惜命最好的方式不是养生,而是管理情绪! 美国作家约翰·斯坦贝克说:“一个失落的灵魂能很快杀死你,远比细菌快得多。”...

  • 你和自己的关系就是和世界的关系

    你善待自己,就会善待世界的一草一木 你爱自己,就会爱世界上所有的一切 你理解自己,就会理解世界上所有的好事坏事 你...

  • 和父母的关系

    每次回家,妈妈总会时不时跟我谈起某个街坊,某个远房亲戚,老家的那些邻居张三王二赵四。然后我便不解:哪个张三啊...

  • 和酒的关系

    迷信 是人蘸一滴酒 世界就醉了 真理 是世界灌一壶酒 人还醒着

  • 和妈妈的关系

    和妈妈的关系一直不顺。为什么?妈妈总是对我有所期望。比如妈妈希望我带她去日本玩,但是我出于诸多考虑,还是不想带她...

  • 和宠物的关系

    小时候我有个梦想:在离海不远的地方,有栋属于我的大房子,房子旁边是我的农场,我骑着一匹英俊的马儿在绿地奔跑,旁边还...

网友评论

      本文标题:glActiveTexture和glBindTexture的关系

      本文链接:https://www.haomeiwen.com/subject/jnyguftx.html