OpenGL ES 和 OpenGL 一样,是 khronos 所维护、定义的免授权费、跨平台的 3D Graphics API,不过和 OpenGL 不同的是,OpenGL ES 主要是针对嵌入式系统(embedded system)的环境(像是手机、PDA);而近年来网页上的多媒体技术越来越複杂、多样化,也渐渐地需要用到 3D Graphics 的硬体加速,所以也出现了基于 OpenGL ES 2.0 而发展、直接在网页上做 3D 显示的 WebGL。

头条推荐

3D开发理论:光照,着色与材质

做3D开发(尤其是建模相关)的话,“材质”一定是个会经常遇到的概念,对于这个总在用的东西,你究竟了解多少呢?——至少我在不久前还是个只用参数不知原理的人。因此,今日特来与大家分享下我的学习心得和研究理解。……>>详细

Android中建立一个OpenGL ES的开发环境

要用OpenGl ES在应用程序中绘制图像,首先你要创建与之对应的视图容器。

当中最直接的方法就是使用GLSurfaceView和GLSurfaceView.Renderer接口。

GLSurfaceView是OpenGL所绘制的图形的视图容器,而GLSurfaceView.Renderer控制在视图上所绘制的图像。想获取更多关于这两个类的信息,请参考OpenGl ES开发指南

GLSurfaceView只是把OpenGL ES图像组合到应用程序的其中一种方法,但对于绘制全屏或接近全屏的图形来说,它是一个很好的选择。开发者如果想把OpenGL ES图像组合成布局中的一小部分,可以查看TextureView。事实上,独立开发者也可以在SurfaceView上创建OpenGL ES视图,但这需要写更多额外的代码。

阅读全文

OpenGL ES 简单教程

什么是OpenGL ES?

OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。

为桌面版本OpenGL 的一个子集。

OpenGL ES 定义了一个在移动平台上能够支持OpenGL最基本功能的精简标准,以适应如手机,PDA或其它消费者移动终端的显示系统。

阅读全文

OpenGL ES 2.0 编程三步曲

OpenGL 与 OpenGL ES的关系OpenGL ES 是基于桌面版本OpenGL 的:

OpenGL ES 1.0  基于OpenGL 1.3 , 在2003年发布

OpenGL ES 1.1   基于OpenGL 1.5 ,  在2004年发布

OpenGL ES 2.0  基于OpenGL2.0,   在2007年发布

阅读全文

OpenGL ES 2.0简单介绍

OpenGL ES 和 OpenGL 一样,是 khronos 所维护、定义的免授权费、跨平台的 3D Graphics API,不过和 OpenGL 不同的是,OpenGL ES 主要是针对嵌入式系统(embedded system)的环境(像是手机、PDA).

而近年来网页上的多媒体技术越来越複杂、多样化,也渐渐地需要用到 3D Graphics 的硬体加速,所以也出现了基于 OpenGL ES 2.0 而发展、直接在网页上做 3D 显示的 WebGL

也由于 OpenGL ES 所针对的环境一般来说效能都较差、有支援的功能也较少,所以OpenGL ES 的技术方面的进展会比 OpenGL 来的慢、而且也有较多的限制。

目前 OpenGL ES 有两个大版本,一个是基于 OpenGL 1.3 / 1.5、使用「fixed function pipeline」的 1.0 / 1.1,另一个则是基于 OpenGL 2.0、使用「programmable pipeline」的 2.x。两者最大的差别,就在于 OpenGL ES 2.0 移除了 fixed function pipeline 的功能,而要使用透过 vertex / fragment shader 来实作的 programmable pipeline。

阅读全文

Android OpenGL ES 2.0绘图:搭建OpenGL ES环境

为了能够在Android应用程序中使用OpenGL ES绘制图形,你必须创建一个视图作为容器。

而更直接的做法是从GLSurfaceView和 GLSurfaceView.Renderer各派生一个实现类。GLSurfaceView作为使用OpenGL绘制的容器,GLSurfaceView.Renderer将用于控制绘图的动作。

对这些类的更多信息,请参阅OpenGL ES开发人员指南。

使用GLSurfaceView几乎是整合OpenGL ES到你的应用中的唯一方式。对于一个需要全屏或近乎屏幕图形视图,它是一个合理的选择。如果开发人员只是期望借助OpenGL ES在某个布局中一小部分绘图,则应该考虑使用TextureView。如果觉得自己是“大牛”,完全可以使用SurfaceView建立一个 OpenGL ES视图,但这样做需要编写相当多的额外的代码。

阅读全文

Android OpenGL ES 2.0绘图:绘制纹理

纹理,在OpenGL中,可以理解为加载到显卡显存中的图片。

Android设备在 2.2开始支持OpenGL ES2.0,从前都是ES1.0 和 ES1.1的版本。

简单来说,OpenGL ES是为了嵌入设备进行功能剪裁后的OpenGL版本。ES2.0是和1.x版本不兼容的,区别和兼容性参见android官方文档。

首先,android使用openGL提供了特殊的view作为基础叫做GLSurfaceView。我们的view需要继承GLSurfaceView。

阅读全文

Android OpenGL ES 2.0绘图:应用投影和相机视图

在OpenGL ES环境中,投影和相机视图让绘制对象以更接近于人们肉眼所看到的实物对象的样子显示。这项仿真技术是通过对绘制对象的坐标进行精确的数学变换而实现的。

投影:这种变换是根据所在GLSurfaceView的宽和高调整绘制对象的坐标。

如果没有此变换,对象会被不规则比例的视图所扭曲变形。

通常一个投影变换只有当创建OpenGLView或你的renderer类的 onSurfaceChange()方法发生变化时才被计算,更多关于OpenGL ES预测和坐标映射的信息,请参阅代码Mapping Coordinates for Drawn Objects。

阅读全文

Android---OpenGL ES之响应触屏事件

像旋转三角形那样,让对象根据预设的程序来移动,以便有助于获取人们的关注,但是如 果想要让你的OpenGL ES图形跟用户交互,应该怎样做呢?要让你的OpenGL ES应用程序能够触碰交互的关键是扩展你的GLSurfaceView实现,重写它的onTouchEvent()方法来监听触碰事件。

本文介绍如何监听触碰事件,让用户可以旋转OpenGL ES对象。

设置触碰监听器

为了让你的OpenGL ES应用程序响应触碰事件,你必须在你GLSurfaceView类中实现onTouchEvent()事件。以下实现的示例显示如何监听MotionEvent.ACTION_MOVE事件,并把它们转换成图形旋转的角度。

阅读全文

如何使用OpenGL ES 2.0的API绘制形状

用OpenGL定义好要绘制的形状后,你就可能想把他们绘制在屏幕上。基于OpenGL ES 2.0绘制这些形状,需要的代码量比你想象中要多一点,这是因为2.0的API提供了大量对于图像渲染管道的控制。

这节课将会介绍如何使用OpenGL ES 2.0的API绘制你在前一节课定义好的形状。

初始化形状

在你制图之前,你必须初始化和加载你计划要绘制的形状。你要在内存和处理速率的渲染器中的onSurfaceCreated()方法对形状初始化,除非在程序执行的过程中,形状的结构(原始坐标)发生了变化。

 

阅读全文

10 Android---OpenGL ES之添加动作

在屏幕上绘制对象是OpenGL的最基本功能,你可以使用其他的Android图形框架类,如Canvas和Drawable对象来完成这些功能。OpenGLES提供了一些用于在三维空间中移动和变换被绘制的对象的能力,以及其他的创建良好用户体验的独特方式。

在本文中,你需要使用前面几篇博文中介绍的示例,给图形添加旋转动作。

旋转图形

使用OpenGL ES 2.0来旋转一个绘制对象是相对简单的。你要创建另外的变换矩阵(旋转矩阵),然后把它跟投影和摄像机变换矩阵组合到一起:

阅读全文

11 Android---OpenGL ES之应用投影和摄像机视图

在OpenGL ES环境中,投影和摄像视图会让你绘制的对象在显示上更加接近眼睛所看到的物理对象。

这种物理视图的模拟是通体对被绘制对象的坐标的数学变换来完成的:

投影---这种变换会基于被绘制的的对象所在的GLSurfaceView的宽度和 高度来调整坐标。如果不进行这种计算,用OpenGL ES所绘制的对象就会由于视图窗口比例差异而发生不对称的现象。

通常只有在OpenGL视图被建立时,或者是你的渲染器的 onSurfaceChanged()方法中发生变化时,投影变换才会被计算。更多的有关OpenGL ES 投影和坐标映射的信息,请看“被绘制对象的坐标映射”。

阅读全文

OpenGL ES iOS篇

OpenGL ES2.0 iPhone开发指
OpenGL ES 是可以在iphone上实现2D和3D图形编程的低级API。如果你之前接触…
iOS开发OpenGL ES教程(1)构
三角形是最“复杂”的图元,但是很容易使用,并且非常实用,这将是你可以绘…
iOS开发OpenGL ES教程(2)绘
上个教程,我们用空白画布的XCode工程来渲染了一个实心的白色的三角形。而…

相关其他资料

OpenGL ES介绍:嵌入式3D图
随着Android 4.3 的发布,我们终于在新Nexus 7上见到了 OpenGL ES 3.0 的身…
bada开发:OpenGL ES 2.0程
本文介绍基于三星bada平台开发OpenGL ES 2.0的基本概念,我们首先开始介绍…

投    票

专题推荐

本书包括了50多个不同的教程(其中还包括了一些完整的游戏框架),并且采用了一种简单实用的新颖方法重点介绍
OpenGL ES 2.0游戏与图形编
本书包括了50多个不同的教程(其中还包括了一些完整的游戏框架),并且采用了一种...
一款《Flappy Bird》捧红了越南开发者阮哈东,引来无数关注。小编谨以此专题献给同样有创业梦想的程序员们
带你走进一个人的手游开发之
一款《Flappy Bird》捧红了越南开发者阮哈东,引来无数关注。小编谨以此专题献...
手机游戏开发可以很简单,如Flappy Bird,一个人一杯咖啡一个下午;也可以很复杂,如大型3D即时在线多人游
手游开发经验分享
手机游戏开发可以很简单,如Flappy Bird,一个人一杯咖啡一个下午;也可以很复...
《疯狂iOS讲义(下)——iPhone/iPad高级应用与手游开发》以iOS 7.0、Xcode 5.0为平台,全面介绍了iOS应用
疯狂iOS讲义(下)--iPhone/
《疯狂iOS讲义(下)——iPhone/iPad高级应用与手游开发》以iOS 7.0、Xcode 5.0...

一周排行

留言评论