OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

https://www.oschina.net/question/253717_72107

用opengl es 2.0显示多个图片的话,我只会一种方式,先将图片生成纹理,然后用下面的方式渲染

// 第一张图
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, iTexID1);
glUniform1i(ProgramID, 0);
//....设置顶点
//.....glDrawArrays或者glDrawElements
// 第二张图
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, iTexID2);
glUniform1i(ProgramID, 1);
//....设置顶点
//.....glDrawArrays或者glDrawElements

虽然这种方法可以画出多个图片,但存在个问题,GL_TEXTURE0的最大值跟硬件有关,而标准的OPENGL ES2只有32个,难道说超过32个图片就不能画?

如果光是glBindTexture绑定纹理,不使用glActiveTexture的话,画出来的模型全是用同一个纹理。

求教一种可以绘制方法,不使用glActiveTexture,也可以画出多个图片。或者使用标准OPENGL ES 2.0接口并不使用OPENGL扩展属性前提下,显示多图片(超过32个)的方法。

cut
发帖于5年前 6回/8K+阅
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片
共有6个答案 最后回答: 4年前

OPENGL ES2.0如何不使用glActiveTexture而显示多个图片发现提的问题太简单呢还是太复杂了,还是太蛋疼了,怎么最近几个问题都没人答。不过这个问题我已经知道怎么解决了,顺便分享下。

原来在同一个framebuff下是可以直接用glBindTexture来选择纹理,但不同的framebuff下要使用glActiveTexture来设置不同的纹理空间做。哥又很SB的开了个多缓冲,结果只能通过这种SB的方式来显示。

--- 共有 1 条评论 ---

yanweimin7: 。。。,我现在也是bind多次,请问下,我有两张图,怎么只开一个缓冲。 2年前

评论(1)引用此答案举报

cut
5年前
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

看帖回帖是一种美德。评论(0)引用此答案举报

*星空
5年前
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

贴纹理还好, 不知道怎么旋转,旋转了  其他的都变了,不知道怎么对单个纹理平移  ,没有gl10好用评论(0)引用此答案举报

hai046
4年前
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

引用来自“hai046”的答案

贴纹理还好, 不知道怎么旋转,旋转了  其他的都变了,不知道怎么对单个纹理平移  ,没有gl10好用
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片纹理怎么会旋转啊,旋转的是被绑定多边形,好不好,shader代码里对多边形的定点使用翻转矩阵进行变换就转起来了,gl10神马滴都弱暴了,老拿着那out的技术不放没什么好处,现在手机gpu都是shader核的了

评论(0)引用此答案举报

cut
4年前
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

这为大侠,小弟最近在学习Android opengl es2.0的相关知识 ,想做个地图应用,以前用canvas技术做了个,但是绘制图片多了就很卡.在网上找了很多都没用很有用的资料,就画了一张图片出来.可是多张图片一直没思路,又不想用opengl es1.1的方法.这位大侠能不能给点资料或opengl es2.0的小示例给小弟研究下啊? 请发我QQ邮箱;468164865@QQ.com. 小弟在此感激不尽,谢谢了.!!

--- 共有 1 条评论 ---

cut: opengl官网有,我手上只有个蓝宝书的电子版的,网上一堆下的,那个也是opengl官网推荐的参考书,2.0以后跟1.0不一样的就是将矩阵变换,着色处理放到shader上做而已,有1.0的基础上手很快的。 4年前

评论(1)引用此答案举报

zhaowe...
4年前
OPENGL ES2.0如何不使用glActiveTexture而显示多个图片

引用来自“zhaowenhao0456”的答案

这为大侠,小弟最近在学习Android opengl es2.0的相关知识 ,想做个地图应用,以前用canvas技术做了个,但是绘制图片多了就很卡.在网上找了很多都没用很有用的资料,就画了一张图片出来.可是多张图片一直没思路,又不想用opengl es1.1的方法.这位大侠能不能给点资料或opengl es2.0的小示例给小弟研究下啊? 请发我QQ邮箱;468164865@QQ.com. 小弟在此感激不尽,谢谢了.!!

画1张图跟画多张图是一样的,而且一个shader程序里能放几张纹理做sample是由你的显卡决定,并不是你想搞几张就几张,一般不是什么做多重纹理,纹理混合之类的效果shader程序一般不会弄几个纹理,所以为啥网上很多例子都是画一张图。

shader其实可以理解为一个自定义的绘图程序,比如说你画一张图,你首先写shader代码,该shader代码就是告诉显卡你的图片怎么画,然后你在c代码那边加载你的shader,然后绑定纹理,顶点,然后画出来,如果你画几张图只需要在加载完shader后,重复做绑定纹理,顶点,然后画出来这几个动作。(注意:这流程应该是绑定纹理,顶点,画;绑定纹理,顶点,画;....而不是绑定纹理,绑定纹理,顶点,顶点,画,画)

这个实例代码的话,其实最好就是去参与opengl es标准定制的芯片生产厂商那搜搜,比如英伟达,amd之类的,下面给你推荐个写的比较好的,而且周边工具都比较齐全的库,里面SDK所有的源代码都有,自己可以看看,个人觉得这个写的比英伟达上面的好,你可以去看下http://www.imgtec.com/powervr/insider/powervr-insider.asp现在苹果ipad,iphone以及三星很多机型都很用那个显示芯片,库里面带有齐全的demo程序,看完demo基本很多特效都会做。

上一篇:CentOS的软件包的管理之rpm和yum


下一篇:OpenGL ES2.0 基本编程