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+阅
共有6个答案 最后回答: 4年前
0

发现提的问题太简单呢还是太复杂了,还是太蛋疼了,怎么最近几个问题都没人答。不过这个问题我已经知道怎么解决了,顺便分享下。

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

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

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

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

cut

5年前
0

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

自由星空

5年前
0

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

hai046

4年前
0

引用来自“hai046”的答案

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

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

cut

4年前
0

这为大侠,小弟最近在学习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年前
0

引用来自“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基本很多特效都会做。

OPENGL ES2.0如何不使用glActiveTexture而显示多个图片的更多相关文章

  1. Cocos2d-x中使用OpenGL ES2.0编写shader

    这几天在看子龙山人的关于OpenGL的文章,先依葫芦画瓢,能看到些东西,才能慢慢深入了解,当入门文章不错,但是其中遇到的一些问题,折腾了一些时间,为了方便和我一样的小白们,在这篇文章中进行写补充. O ...

  2. iOS开发——图形编程OC篇&OpenGL ES2.0编程步骤

    OpenGL ES2.0编程步骤 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设 ...

  3. Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤

    原文地址: Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤 - 网络资源是无限的 - 博客频道 - CSDN.NET http://blog.csdn.net/fen ...

  4. OpenGL ES2.0入门详解

    引自:http://blog.csdn.net/wangyuchun_799/article/details/7736928  1.决定你要支持的OpenGL ES的版本.目前,OpenGL ES包含 ...

  5. Android +NDK+eclipse+opengl ES2.0 开启深度測试

    參考:https://www.opengl.org/discussion_boards/showthread.php/172736-OpenGL-ES-Depth-Buffer-Problem 环境: ...

  6. OpenGL ES2.0 基本编程

    1. EGL OpenGL ES命令须要一个rendering context和一个drawing surface. Rendering Context: 保存当前的OpenGL ES状态. Draw ...

  7. OpenGL ES2.0 入门经典例子

    原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿 ...

  8. OpenGL ES2.0基础入门

    1.OpenGL ES 1.x渲染管线(又称为渲染流水线) (1).基本处理: 基本处理主要是设定3D空间中物体的顶点坐标.顶点对应的颜色.顶点的纹理坐标等属性,并且指定绘制方式. 常见的绘制方式有: ...

  9. Android使用OpenGL ES2.0显示YUV,您的手机上的数据要解决两个方面的坐标

    如果说 ,我不知道,如果你不明白这个话题.连接到:http://blog.csdn.net/wangchenggggdn/article/details/8896453(下称链接①), 里面评论有非常 ...

随机推荐

  1. spring入门之JdbcTemplate 操作crud

    Spring 通过调用 JdbcTemplate来实现对数据库的增删改查,主要用到JdbcTemplate类的4个方法,首先,配置数据库信息,创建对象,代码通用: //设置数据库信息 DriverMa ...

  2. OpenCV学习笔记十八:opencv_flann模块

    一,简介: Fast Library for Approximate Nearest Neighbors (FLANN)算法库.

  3. MySQL的having子句

    1.定义:having子句对分组的结果集进行进一步的筛选 2.语法:select 字段列表 from 表名称 [where 子句][gruop by 子句] [having 子句]; 3.举例:查询出 ...

  4. Lumen migration(数据库协同)

    建立迁移文件/新建表文件 php artisan make:migration create_users_table 添加字段 php artisan make:migration add_colum ...

  5. android 微信朋友分享,朋友圈分享

    android 微信朋友分享,朋友圈分享 包名必须写成  com.weixin WXEntryActivity package com.weixin.wxapi; import android.app ...

  6. Python HTMLTestRunner报告及BeautifulReport报告

    import unittest import HTMLTestRunner class Testfunc(unittest.TestCase): def testa(self): "&quo ...

  7. ubuntu虚拟化平台libvrit-bin

    http://download.cirros-cloud.net/0.3.5/ 下载 cirros-0.3.5-x86_64-disk.img 因为 KVM(准确说是 Libvirt)默认不接受远程管 ...

  8. php学习笔记8--半边引号引发的问题

    前段时间重装了系统,后来说是又要用php,就重新搭建了apache+php+mysql的环境,由于之前搭建过好多次,感觉很easy,很快就搭建完成,然后写了下面的常用的测试环境的代码: <?ph ...

  9. 通过spring boot提供restful api

    1 将返回设置为produces = "application/json" 返回给客户端json格式的response. 2 对各种异常的处理 各种异常如何返回给客户端? 各种异常 ...

  10. 【题解】BZOJ3489 A Hard RMQ problem(主席树套主席树)

    [题解]A simple RMQ problem 占坑,免得咕咕咕了,争取在2h内写出代码 upd:由于博主太菜而且硬是要用指针写两个主席树,所以延后2hQAQ upd:由于博主太菜而且太懒所以他决定 ...