学习android的opengl es
2013-07-24 17:29
316 查看
创建一个GLSurfaceView,GLSurfaceView继承自SurfaceView,同时实现Callback,
定义一个内部类RenderRunnable 实现 Runnable,也就是其中运行了一个新开的线程
定义一个接口(非必须),实现Renderer,包括 init()方法、resize(w,h)方法、render()方法
其中render方法作用是渲染一帧
这个线程用来干嘛?
1. 初始化EGL,获取egl,获取eglDisplay,egl初始化,配置eglConfig,创建eglContext,创建eglSurface
配置eglConfig的时候主要是使用一个int数组,按这样的顺序排列:{设置项1, 值1,设置项2, 值2,设置项3, 值3,... , EGL10.EGL_NONE}
创建eglSurface的时候,需要传入eglDisplay,eglConfig还有surfaceView的Holder
2. 初始化renderer,调动renderer的resize方法,将surface的宽高传入
3. 当surfaceChanged被调用的时候,检验surface是否重新调整了宽高,如果调整了,就更新surface的宽高,然后发送一个resize事件到renderRunable当中,进行异步调节。
4. 创建一个TriangleRenderer实现Renderer接口,在其中通过static块加载triangle.so文件,写三个native方法,对应Renderer接口。
5.下面是NDK部分:
platform_android.h当中引入triangle.h文件,extern "C"导出三个ndk方法:
在triangle.h中使用c语言实现以下三个方法:init()方法、resize(w,h)方法、render()方法
init()方法:
[1]设置背景颜色为指定的RGBA
[2]启动顶点数组的特性
resize(w,h)方法:
[1]更改视口大小为w,h
[2]计算ratio = w / h宽高比,调用透视投影,glFrustumf(-ratio, ratio, -1, 1, -1, 7)
render() 方法:
[1]设置为模型视图矩阵
[2]重置为单位矩阵
[3]给顶点数组当中的三角形上色
这篇文章不错:
[转载]从零开始学习OpenGL ES之二 – 简单绘图概述
http://bbs.ityran.com/article-5-1.html
GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了(zz)
http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/
再议gluPerspective和gluLookAt的关系
http://blog.csdn.net/wu4long/article/details/6126408
我可以使用 Android NDK glu 吗
http://efreedom.com/Question/1-7589563/Can-Use-Glu-Android-NDK
gluPerspective & gluLookAt Implementation in Android NDK
http://www.cnblogs.com/open-coder/archive/2012/12/24/2831608.html
GL_PROJECTION和GL_MODELVIEW的作用
http://blog.csdn.net/eit520/article/details/7629023
glMatrixMode
http://blog.csdn.net/zhanglongit/article/details/7525918
OpenGL 入门纪录--2 .透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用法
http://hi.baidu.com/zhujianzhai/item/56ded397cf878237336eebeb
定义一个内部类RenderRunnable 实现 Runnable,也就是其中运行了一个新开的线程
定义一个接口(非必须),实现Renderer,包括 init()方法、resize(w,h)方法、render()方法
其中render方法作用是渲染一帧
这个线程用来干嘛?
1. 初始化EGL,获取egl,获取eglDisplay,egl初始化,配置eglConfig,创建eglContext,创建eglSurface
配置eglConfig的时候主要是使用一个int数组,按这样的顺序排列:{设置项1, 值1,设置项2, 值2,设置项3, 值3,... , EGL10.EGL_NONE}
创建eglSurface的时候,需要传入eglDisplay,eglConfig还有surfaceView的Holder
2. 初始化renderer,调动renderer的resize方法,将surface的宽高传入
3. 当surfaceChanged被调用的时候,检验surface是否重新调整了宽高,如果调整了,就更新surface的宽高,然后发送一个resize事件到renderRunable当中,进行异步调节。
4. 创建一个TriangleRenderer实现Renderer接口,在其中通过static块加载triangle.so文件,写三个native方法,对应Renderer接口。
5.下面是NDK部分:
platform_android.h当中引入triangle.h文件,extern "C"导出三个ndk方法:
在triangle.h中使用c语言实现以下三个方法:init()方法、resize(w,h)方法、render()方法
init()方法:
[1]设置背景颜色为指定的RGBA
[2]启动顶点数组的特性
resize(w,h)方法:
[1]更改视口大小为w,h
[2]计算ratio = w / h宽高比,调用透视投影,glFrustumf(-ratio, ratio, -1, 1, -1, 7)
render() 方法:
[1]设置为模型视图矩阵
[2]重置为单位矩阵
[3]给顶点数组当中的三角形上色
这篇文章不错:
[转载]从零开始学习OpenGL ES之二 – 简单绘图概述
http://bbs.ityran.com/article-5-1.html
GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了(zz)
http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/
再议gluPerspective和gluLookAt的关系
http://blog.csdn.net/wu4long/article/details/6126408
我可以使用 Android NDK glu 吗
http://efreedom.com/Question/1-7589563/Can-Use-Glu-Android-NDK
gluPerspective & gluLookAt Implementation in Android NDK
http://www.cnblogs.com/open-coder/archive/2012/12/24/2831608.html
GL_PROJECTION和GL_MODELVIEW的作用
http://blog.csdn.net/eit520/article/details/7629023
glMatrixMode
http://blog.csdn.net/zhanglongit/article/details/7525918
OpenGL 入门纪录--2 .透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用法
http://hi.baidu.com/zhujianzhai/item/56ded397cf878237336eebeb
相关文章推荐
- Android OpenGL学习笔记
- android OpenGL学习笔记(一)
- 2D/3D绘图(Skia、OpenGL/ES)-android
- Android OpenGL ES 开发教程(2):关于OpenGL ES
- 【Android开发学习34】OpenGL 性能优化
- Android OpenGL学习笔记(一)
- Android OpenGL 学习笔记 --开始篇 推荐
- Android OpenGL学习笔记(二)之----三角形的绘制.
- android open gl es2.0 学习
- OpenGL ES Tutorial for Android – Part V – More on Meshes
- Android学习20--OpenGL的"mapPoints"
- Android using OpenGL ES for 2D development (introduction)
- Android OpenGL学习足迹——一些重要的函数
- OpenGL.ES在Android上的简单实践:2-曲棍球(编译着色器及屏幕上绘图)
- [Android] Having Fun: Image Processing with OpenGL ES Fragment Shaders
- Android OpenGL ES零基础系列(三):OpenGL ES的渲染管道及VertexShader与FragmentShader
- Android OpenGL学习笔记(一)
- Android Graphic : apk and Skia/OpenGL|ES
- OpenGL ES Tutorial for Android – Part VI – Textures
- Android OpenGL(二) 学习《Android 3D 游戏开发技术宝典 -openGL ES 2.0》