OpenGL ES Android 基础(一)
来源:互联网 发布:淘宝分期付款额度 编辑:程序博客网 时间:2024/05/16 04:44
一、OpenGL ES 的环境搭建
在Android中使用OpenGL ES 绘制图形,首先需要创建一个视图容器。实现这一点的最直接的方法之一是实现GLSurfaceView 和GLSurfaceView.Renderer。 GLSurfaceView是使用OpenGL绘制图形的视图容器。GLSurfaceView.Renderer控制在该视图中绘制的图形。
GLSurfaceView只是将OpenGL ES图形融入到应用程序中的一种方法。对于全屏或近全屏幕图形视图,这是一个合理的选择。想要在其布局的一小部分中集成OpenGL ES图形的开发人员应该看看TextureView。对于真正的,自己动手的开发人员,也可以使用SurfaceView构建OpenGL ES视图,但这需要编写相当多的附加代码。
1、在Manifest清单文件中声明OpenGL ES 的使用。
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
2、为OponGL ES图形创建一个Activity
public class OpenGLES20Activity extends Activity { private GLSurfaceView mGLView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create a GLSurfaceView instance and set it // as the ContentView for this Activity. mGLView = new MyGLSurfaceView(this); setContentView(mGLView); }}
3、构建GLSurfaceView对象GLSurfaceView是一个专门绘制OpenGL ES图形的视图。它本身内容并不多。设置GLSurfaceView.Renderer来控制对象进行实际绘制。实际上,这个对象的代码很少,你可能会试图跳过扩展它,并创建一个未修改的GLSurfaceView实例,但不要这样做。您需要继承此类才能捕获“触摸事件响应”。
class MyGLSurfaceView extends GLSurfaceView { private final MyGLRenderer mRenderer; public MyGLSurfaceView(Context context){ super(context); // Create an OpenGL ES 2.0 context setEGLContextClientVersion(2); mRenderer = new MyGLRenderer(); // Set the Renderer for drawing on the GLSurfaceView setRenderer(mRenderer); // Render the view only when there is a change in the drawing data setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); }}
4、构建Renderer类
在使用OpenGL ES的应用程序中,GLSurfaceView.Renderer类或渲染器的实现在哪里开始变得有趣。该类控制与它相关联的GLSurfaceView中绘制的内容。在Android系统中,渲染器中有三种方法可以通过GLSurfaceView进行绘制:
onSurfaceCreated() - 调用一次用于设置视图的OpenGL ES环境。onDrawFrame() - 调用每次重绘的视图。onSurfaceChanged() - 如果视图的几何变化,例如当设备的屏幕方向更改时调用。
这是OpenGL ES渲染器的一个非常基本的实现,它只是在GLSurfaceView中绘制黑色背景:
public class MyGLRenderer implements GLSurfaceView.Renderer { public void onSurfaceCreated(GL10 unused, EGLConfig config) { // Set the background frame color GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } public void onDrawFrame(GL10 unused) { // Redraw background color GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); } public void onSurfaceChanged(GL10 unused, int width, int height) { GLES20.glViewport(0, 0, width, height); }}
阅读全文
1 0
- Android基础系列-----------OpenGL ES(一)
- OpenGL ES Android 基础(一)
- Android中OpenGL ES 3D编程基础(一)
- Android OpenGL ES(一):关于OpenGL ES
- [Android实例] OpenGL ES基础教程(一)
- OpenGL Es(一)
- Android OpenGL ES (1) -- 基础
- Android OpenGL ES 应用(一)
- android opengl es从零开始(一)
- 零基础开发OpenGL ES 2.0学习笔记-Android篇(一)
- 笔谈OpenGL ES(一)
- OpenGL ES 入门 (一)
- OpenGL ES 光照(一)
- Android 3D开发,OpenGL ES 的使用(一)
- OpenGL ES总结(一)OpenGL 初识
- Android OpenGL ES 基础:绘制三角形
- Android OpenGL ES 绘图 -- 基础元素
- android opengl es学习总结一:基础知识
- Android studio 事件总线RxBus学习总结
- 微信公众号相关的设置
- 2017.07.05回顾
- Fontawesome字体使用说明及其常用效果语法
- eclipse-tomcat部署maven项目方式之四
- OpenGL ES Android 基础(一)
- Android 开发ListView学习总结
- typeof的缺点以及解决方式
- unity学习日记:关于协同程序Coroutine
- PAT (Advanced Level) Practise 1081 Rational Sum(20)
- bzoj3505 组合数
- geckodriver下载 -- Selenium Firefox 驱动
- eclipse-tomcatplugin部署maven项目方式五
- 天啦噜:测试环境OK,发布到公网跑不了?!!!