Visual Studiolocale emulatorr for Android支持OpenGL ES 3.0吗

2593人阅读
Android (NDK)(10)
Android(1.6)模拟器使用了1.0版本的eGL,
没有扩展GL_ARB_vertex_buffer_object,却有GL_ANDROID_vertex_buffer_object,
貌似使用了PixelFlinger渲染器的Android设备都应该支持VBO,至少是软件上的。
这里有一个问题,
需确认EGL1.1的设备(包括其它OS)是否都支持VBO,因为这是1.1版本的特性,
但是没看到VBO的扩展让人困惑,特别是PowerVR SGX 5xx GPU也没有VBO的这个扩展。
安卓(1.6)模拟器所支持的eGL扩展
OpenGL informations:
vendor & & : Android
renderer &: Android PixelFlinger 1.0
version & &: OpenGL ES-CM 1.0
GL_OES_byte_coordinates
GL_OES_fixed_point
GL_OES_single_precision
GL_OES_read_format
GL_OES_compressed_paletted_texture
GL_OES_draw_texture
GL_OES_matrix_get
GL_OES_query_matrix
GL_ARB_texture_compression
GL_ARB_texture_non_power_of_two
GL_ANDROID_direct_texture
GL_ANDROID_user_clip_plane
GL_ANDROID_vertex_buffer_object
GL_ANDROID_generate_mipmap
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47928次
排名:千里之外
原创:24篇
评论:14条
(1)(1)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3)(5)(4)(1)(2)(1)(2)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'Android 4.3版新功能:支持OpenGL ES 3.0
Android 4.3版新功能:支持OpenGL ES 3.0
据国外媒体报道,在下周即将举办的谷歌I/O大会上,我们等来的可能并不是Android 5.0,而是基于升级版的Android 4.3。 根据消息来源,前不久HTC工程师也在无意间透露了Android 4.3的新功能,除了拥有更低功耗的蓝牙以外还将支持OpenGL ES 3.0。 谷歌I/O 2013开发者大会将于美国时间5月15日-17日在旧金山举办,目前来看除了新版Android 4.3系统,还会有一些新款谷歌硬件终端设备发布,这也让我们对本次大会有了更多一份期待。
  据国外媒体报道,在下周即将举办的谷歌I/O大会上,我们等来的可能并不是Android 5.0,而是基于升级版的Android 4.3。
  根据消息来源,前不久HTC工程师也在无意间透露了Android 4.3的新功能,除了拥有更低功耗的蓝牙以外还将支持OpenGL ES 3.0。
  谷歌I/O 2013开发者大会将于美国时间5月15日-17日在旧金山举办,目前来看除了新版Android 4.3系统,还会有一些新款谷歌硬件终端设备发布,这也让我们对本次大会有了更多一份期待。
(window.slotbydup=window.slotbydup || []).push({
id: '2331716',
container: s,
size: '600,200',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2331725',
container: s,
size: '300,500',
display: 'inlay-fix'
12345678910
扫我~关注“机锋网”微信公众号
第一时间获取有价值的新闻!
(window.slotbydup=window.slotbydup || []).push({
id: '2331717',
container: s,
size: '300,300',
display: 'inlay-fix'
友情链接:1322人阅读
opengl(9)
Android(11)
Android 目前支持下面几个版本的OpenGL ES API :
OpenGL ES 1.0 和 1.1 :Android 1.0和更高的版本支持这个API规范。
OpenGL ES 2.0 : Android 2.2(API 8)和更高的版本支持这个API规范。
OpenGL ES 3.0 : Android 4.3(API 18)和更高的版本支持这个API规范。
OpenGL ES 3.1 : &Android 5.0(API 21)和更高的版本支持这个API规范。
支持OpenGL ES 3.0的API需要实现设备生产厂家提供的图形管道,所以一个Android4.3或者更高版本的设备可能并不支持OpenGL ES 3.0.
Android在framework API和NDK都提供了对OpenGL的支持
OpenGL ES包:
1、OpenGL ES 1.0/1.1 API 包
& & &android.opengl -- 这个包提供了OpenGL ES 1.0/1.1包含类的静态接口,比javax.microedition.khronos 包里的接口有更好的性能
GLES10GLES10ExtGLES11GLES11Ext
& & &javax.microedition.khronos.opengles -- 这个包里提供了OpenGL ES 1.0/1.1的标准实现
GL10GL10ExtGL11GL11ExtGL11ExtensionPack
2 . OpenGL ES 2.0的API类
android.opengl.GLES20 -- 这个包提供了OpenGLES 2.0的接口,在Android2.2及以上版本可以使用。
3. OpenGL ES 3.0/3/1的API包
& & android.opengl -- 这个包提供了OpenGL ES 3.0/3.1的类接口。
GLES30GLES31GLES31Ext (Android Extension Pack)
为绘制对象映射坐标(Mapping Coordinates for Drawn Objects)
& & & &在Android设备上面展示图形的一个基本问题是屏幕的尺寸和形状都不同,OpenGL假设默认有一个统一的正方形坐标系,并将这些坐标绘制到通常不是正方形的屏幕上面,就像它是一个完美的正方形。
图1 默认的OpenGL坐标系统(左) 映射到通常的Android设备屏幕(右)
& & & 上面的图片现实了OpenGL帧假设的统一坐标系统(左),和这些坐标是怎么映射到一个通常的设备横屏上的(右)。为了解决这个问题,你可以应用OpenGL投影模式和相机视图来变换坐标,使你的图形对象在任何屏幕上面都有正确的比例。
& & 为了应用投影和相机视图,创建一个投影矩阵和相机视图矩阵,并将它们应用到OpenGL渲染管道,投影矩阵重新计算图形的坐标,使它们在设备屏幕上面正确映射。相机视图矩阵从一个特定的视图位置给渲染对象创建一个变换。
OpenGL ES 1.0的投影和相机视图
& & & &在ES 1.0 API,通过为投影和相机视图创建相应的矩阵,然后把它们添加到OpenGL环境中。
& & & &1.投影矩阵 - 使用设备屏幕的几何参数创建投影矩阵,来重新计算对象的坐标,使它们以正确的比例绘制。下面的示例代码展示了在onSurfaceChanged()方法中以屏幕的宽高比创建投影矩阵,并把它应用到OpenGL渲染环境中去。
public void onSurfaceChanged(GL10 gl, int width, int height) {
& & gl.glViewport(0, 0, width, height);
& & // make adjustments for screen ratio
& & float ratio = (float) width /
& & gl.glMatrixMode(GL10.GL_PROJECTION); & & & &// set matrix to projection mode
& & gl.glLoadIdentity();// reset the matrix to its default state
& & gl.glFrustumf(-ratio, ratio, -1, 1, 3, 7); &// apply the projection matrix
& & & &2.相机变换矩阵 - 当你使用投影矩阵适应了坐标系统后,你必须应用一个相机视图。下面的代码展示了使用GLU.gluLookAt()创建一个模拟相机位置的视图变换.
public void onDrawFrame(GL10 gl) {
& & // Set GL_MODELVIEW transformation mode
& & gl.glMatrixMode(GL10.GL_MODELVIEW);
& & gl.glLoadIdentity();// reset the matrix to its default state
& & // When using GL_MODELVIEW, you must set the camera view
& & GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
OpenGL ES 2.0或者更高版本的投影和相机视图
& & & &在ES 2.0或者3.0的API里面,应用投影和相机视图时,首先要向图形对象的顶点着色器添加一个矩阵成员对象,当矩阵对象添加后,就可以向对象生成和应用投影和相机视图矩阵。
1. &向顶点着色器中添加矩阵 - 为view的投影矩阵创建一个变量,然后将它与着色器的position相乘。下面的着色器代码,包含的uMVPMatrix成员允许你应用投影和相机视图矩阵到使用这个着色器的对象上面。
private final String vertexShaderCode =
& & // This matrix member variable provides a hook to manipulate
& & // the coordinates of objects that use this vertex shader.
& & &uniform mat4 uMVPM & \n& +
& & &attribute vec4 vP &\n& +
& & &void main(){ & & & & & & & \n& +
& & // The matrix must be included as part of gl_Position
& & // Note that the uMVPMatrix factor *must be first* in order
& & // for the matrix multiplication product to be correct.
& & & gl_Position = uMVPMatrix * vP \n& +
& & &} &\n&;
& & & &注意:上面的示例在顶点着色器中定义了一个矩阵变换成员,你可以给这个矩阵应用一个投影和相机视图的结合矩阵。根据你的需求,可能会需要定义分开的投影矩阵和相机视图矩阵成员,以方便分开自由的改变它们。
2. &访问着色器矩阵 - 当你在顶点着色器中创建了hook之后,你可以访问这个变量来应用投影和相机视图矩阵。下面的代码显示了如何访问顶点着色器中定义的矩阵变量:
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
& & muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, &uMVPMatrix&);
3. & 创建投影和相机视图矩阵 - 生成可应用到图形对象的投影和视图矩阵。下面的代码根据设备屏幕的宽高比创建了投影矩阵和相机视图矩阵。
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
& & // Create a camera view matrix
& & Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
public void onSurfaceChanged(GL10 unused, int width, int height) {
& & GLES20.glViewport(0, 0, width, height);
& & float ratio = (float) width /
& & // create a projection matrix from device screen geometry
& & Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
4. &应用投影和相机视图矩阵 - 应用投影和相机视图变换,将两个矩阵相乘,然后将它们设置到顶点着色器。下面的代码显示了如何将矩阵应用到openGL渲染的图形对象上
public void onDrawFrame(GL10 unused) {
& & // Combine the projection and camera view matrices
& & Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);
& & // Apply the combined projection and camera view transformations
& & GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
& & // Draw objects
& & & &OpenGL ES 1.0/1.1API与2.0或者更高的版本是明显不同的,1.x版本有更多方便的方法和固定的管线,而2.0和3.0API通过OpenGL着色器提供了更多对管线的直接控制。你应该仔细考虑绘制图形的需求,并且选择最适合应用的api。
& & & &OpenGL ES 3.0 API比2.0提供跟多的特性和更好的性能,同时也向下兼容。这意味着你可以将应用的OpenGL ES的版本设置为2.0,并选择性地包含一些有效的3.0图形特性。
纹理压缩支持
& & & &纹理压缩可以通过减少内存来显著地提高OpenGL的性能,使内存使用的效率更高。Android framework提供了ETC1压缩格式作为标准特性,包含了ETC1Util工具类和etctool压缩工具(位于Android SDK下的&sdk&/tools/目录)。
& & & 大部分的Android设备都支持ETC1格式,但是不保证它一定支持。检查设备是否支持ETC1格式,调用 ETC1Util.isETC1Supported()方法。ETC1纹理压缩格式不支持有透明度的纹理(alpha通道),如果应用需要有透明度的纹理,你应该选择目标设备支持的其他纹理压缩格式。
& & & 当使用OpenGL ES3.0时,ETC2/EAC纹理压缩格式是确保可用的,这种纹理格式有优秀的压缩比率,高质量的视觉效果,并且也支持透明度。
& & & 除了ETC格式,Android设备支持很多其他格式的纹理压缩,根据GPU芯片和OpenGL实现的不同略有差异。你应该调查目标设备所支持的压缩格式,然后再确定应用支持哪些压缩格式。为了确定设备支持哪些纹理格式,你必须查询设备,检查OpenGL的扩展名,它们标记了哪些纹理压缩格式可以被支持。一些常见的纹理压缩格式有以下几种:
ATITC (ATC) - ATI纹理压缩在许多设备上面都支持,它支持RGB纹理压缩但不包含alpha通道,一些OpenGL扩展名可以代表这种格式,比如:
GL_AMD_compressed_ATC_texture
GL_ATI_texture_compression_atitc
PVRTC-PVRTC纹理压缩在许多设备上面都支持,支持每个像素2位或者4位的纹理,包含或者不包含alpha通道都可以。下面的OpenGL扩展名可以代表这种格式,比如:
GL_IMG_texture_compression_pvrtc
S3TC (DXTn/DXTC)-S3有一些格式变化(从DXT1到DXT5),使用并不是很广泛。它支持包含4位或者8位alpha通道的RGB纹理。下面的OpenGL扩展名可以代表这种格式,比如:
GL_OES_texture_compression_S3TC
GL_EXT_texture_compression_s3tc
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_dxt3
GL_EXT_texture_compression_dxt5
3DC - 3DC纹理压缩是比较少使用的支持包含alpha通道的RGB纹理,下面的OpenGL扩展名可以代表这种格式:
GL_AMD_compressed_3DC_texture
& & & &这些纹理压缩格式并不是在所有的设备上面都支持,不同的制造商和设备支持的格式不同,一旦你决定应用哪种纹理压缩格式,一定要在manifest文件中使用 &supports-gl-texture& 进行声明,使用这个声明可以被Google Play过滤掉不支持这些格式的设备。
确定OpenGL扩展
& & & & OpenGL实现根据OpenGL ES API所支持的扩展而不同,这些扩展包含了纹理压缩,但通常还包括其他OpenGL功能集的扩展。
通过下面方法可以确定特定的一个设备上面支持哪些纹理压缩格式和OpenGL扩展:
& & & &1.在目标设备上面执行下面的代码来确定设备支持哪些纹理压缩格式,不同的机型上面结果不一样,所以你应该在多个机型上面运行这个代码,来确定哪些压缩格式是被广泛支持的:
String extensions = javax.microedition.khronos.opengles.GL10.glGetString(GL10.GL_EXTENSIONS);
& & & &2.查看这个方法的输出,来确定设备支持哪些OpenGL扩展
Android扩展包(AEP)
& & & &AEP确保了应用支持标准化的OpenGL扩展集,它超出了OpenGL 3.1规范描述的核心集,将这些扩展打包促进了不同设备上面功能的一致,同时允许开发者充分利用手机GPU设备的最新功能。
& & & &AEP还提高了对图像、着色器存储缓存和片元着色器原子计数器的支持。
& & & &app使用AEP时,比如在manifest里进行声明,另外,平台版本必须支持它
& & &&uses feature android:name=&android.hardware.opengles.aep& &&android:required=&true& /&
& & & 使用 hasSystemFeature(String)方法来验证是否支持AEP,传递FEATURE_OPENGLES_EXTENSION_PACK作为参数:
boolean deviceSupportsAEP = getPackageManager().hasSystemFeature&(PackageManager.FEATURE_OPENGLES_EXTENSION_PACK);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19259次
排名:千里之外
原创:10篇
译文:12篇
(2)(12)(14)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'将支持OpenGL ES 3.0 安卓4.3新功能曝光_百度经验
&&&&&&&&&手机软件将支持OpenGL ES 3.0 安卓4.3新功能曝光
百度经验: & & 近日,美国旧金山安卓用户组见面会的一份记录显示了安卓4.3的许多新功能。在为5月16号计划准备的一次发布会上,来自HTC的三个开发者专家将讨论蓝牙低耗能和OpenGL ES 3.0的内容。据该记录显示,安卓用户组里的会员届时将了解到BLE的规格以及新的应用程序界面,这些界面将在多款设备中实际演示,包括心率监控、多传感器工具(温度、压力、湿度、加速计)等等。OpenGL ES 3.0有望给安卓带来更新的着色语言和增强的表面纹理处理。移动端显卡规格已经由像高通骁龙600这样的芯片支持,众所周知高通骁龙600都被放置在像LG Optimus G Pro、HTC One和三星Galaxy S4这样的新款手机里。升级的显卡肯定可以给安卓4.3带来更多有趣的游戏,百信手机大全。预计安卓4.3将在本月末的谷歌I/O大会上发布。起初,大家都认为谷歌会在开发者大会上亮相其安卓5.0 Key Lime Pie,但是由于OEM们纷纷请求延期,以便可以在他们目前的设备上推出安卓4.2.2,谷歌只好同意暂且搁置发布安卓下一代主要升级计划。经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。投票(0)已投票(0)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验00000热门杂志第1期你不知道的iPad技巧3631次分享第1期win7电脑那些事6384次分享第2期新人玩转百度经验1298次分享第1期Win8.1实用小技巧2603次分享第1期小白装大神1811次分享◆请扫描分享到朋友圈<div id="click_content_aid_
<div id="favrite_content_aid_
Android 4.3开放下载:支持多用户,支持OpenGL ES 3.0
Android 4.3开放下载:支持多用户,支持OpenGL ES 3.0
01:27&&|&&作者:
&&|&&关键字:,,,,
  今晚谷歌也发布了新果冻豆Android 4.3系统,主要的新特性有:多用户功能、蓝牙功能改进、加入OpenGL ES 3.0的支持、DRM硬件视频加密。&br&&br&
  除新Nexus 7外,谷歌将于今天开始向Galaxy Nexus、Nexus 4、Nexus 10和旧款Nexus 7进行Android 4.3 OTA升级推送。
  同样是今天晚上,除了发布以外,谷歌还给大家介绍了这款平板所运行的最新的果冻豆系统:Android&4.3。下面为大家介绍一下这个新版本增加的一些重要特性。图片来自The Verge,下同  多用户功能:这一功能终于实装上了,现在机主可以对系统下的各个用户的权限作更改,包括资料浏览、应用等等,一方面可以在多用户的情况下保护自己的隐私,另一方面家长们也可以防止熊孩子们打开不应该看的东西,或者购买各种东西。  蓝牙功能改进:Android 4.3加入了Bluetooth Low&Energy技术,原来的功耗下降了,还可以适配更多的设备,像手环、眼睛什么的。  OpenGL ES 3.0:Android 4.3支持OpenGL ES&3.0技术,这一技术可以给3D游戏带来更好的光影、粒子、纹理特效。  DRM加密:允许基于硬件进行视频加密,譬如说Netflix应用就可以用到。  除了刚发布的新Nexus 7外,谷歌将于今天开始向Galaxy Nexus、Nexus 4、Nexus 10和旧款Nexus&7进行Android 4.3 OTA升级推送,相信谷歌版三星、也将会在近期获得正式版Android 4.3 OTA升级。  更新:谷歌的工厂镜像(Factory Image)下载页面已经更新了Nexus产品的Android 4.3镜像下载地址,有需要的朋友可以到下面页面进行下载。  
本文读者还喜欢
已有1次举报
(你可匿名或登录后发表评论。没有帐号可,或使用和直接登录)
众生皆为购物来,包里有米勿犹豫,诚心诚意买买买,灯罩助你莫相拒(头像为@使徒子的“一只狗”)
扫一扫右边的二维码
关注超能网微信账号
开学装机少不了,高性价比SSD导购
长续航、性能也够强的手机导购
暑假游戏笔记本导购
买部玩《王者荣耀》的手机

我要回帖

更多关于 emulator 的文章

 

随机推荐