Android的OpenGL学习笔记(1)
来源:互联网 发布:外国的聊天软件 编辑:程序博客网 时间:2024/05/10 09:50
Android的OpenGL学习笔记(1)
先写第一个程序,介绍OpenGL的某些知识和框架结构:
MainActivity,Vortex.java代码:
- package com.droidnova.android.games.vortex;
- import android.app.Activity;
- import android.os.Bundle;
- public class Vortex extends Activity {
- //private static final String LOG_TAG = Vortex.class.getSimpleName();
- private VortexView _vortexView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- _vortexView = new VortexView(this);
- setContentView(_vortexView);
- }
- }
- /*@Override
- protected void onPause() {
- super.onPause();
- _vortexView.onPause();
- }
- @Override
- protected void onResume() {
- super.onResume();
- _vortexView.onResume();
- }*/
我们继承了GLSurfaceView是因为它会帮助我们画3D图像。接下来看VortexRenderer类。一个Renderer包含画一帧所必需的所有东西。
VortexRendere.java
- package com.droidnova.android.games.vortex;
- import javax.microedition.khronos.egl.EGLConfig;
- import javax.microedition.khronos.opengles.GL10;
- import android.opengl.GLSurfaceView;
- public class VortexRenderer implements GLSurfaceView.Renderer {
- //private static final String LOG_TAG = VortexRenderer.class.getSimpleName();
- private float _red = 0.9f;
- private float _green = 0.2f;
- private float _blue = 0.2f;
- //当窗口创建的时候需要调用onSurfaceCreated,所以我们可以在里面对OpenGL做一些初始化的工作
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- // Do nothing special.
- }
- //surface发生改变的时候调用,例如从竖屏切换到横屏的时候。当窗口的大小发生改变的时候,当然,不管窗口的大小是否已经改变。
- //它在程序开始时至少运行一次,所以我们在该方法中设置OpenGL场景的大小
- @Override
- public void onSurfaceChanged(GL10 gl, int w, int h) {
- gl.glViewport(0, 0, w, h);//设置OpenGL场景的大小,这里设置的和屏幕同样大小
- }
- //当任何时候调用一个画图方法的时候。即所有的绘图操作都在onDrawFrame方法中进行,在绘图之前,需要将屏幕清除成前面所指定的颜色,
- //清除深度缓存,并且重置场景,然后就可以进行绘图了!
- @Override
- public void onDrawFrame(GL10 gl) {
- // define the color we want to be displayed as the "clipping wall"
- gl.glClearColor(_red, _green, _blue, 1.0f);//为底色定义了颜色
- // clear the color buffer to show the ClearColor we called above...
- gl.glClear(GL10.GL_COLOR_BUFFER_BIT);//GL10,这里的10代表1.0版本。清空颜色缓存。目前Android中的版本只达到1.1
- }
- public void setColor(float r, float g, float b) {
- _red = r;
- _green = g;
- _blue = b;
- }
- }
VortexView.java代码:(属于自定义View)
- package com.droidnova.android.games.vortex;
- import android.content.Context;
- import android.opengl.GLSurfaceView;
- import android.view.MotionEvent;
- public class VortexView extends GLSurfaceView {
- //private static final String LOG_TAG = VortexView.class.getSimpleName();
- private VortexRenderer _renderer;
- public VortexView(Context context) {
- super(context);
- _renderer = new VortexRenderer();
- setRenderer(_renderer);
- }
- public boolean onTouchEvent(final MotionEvent event) {
- queueEvent(new Runnable() {
- public void run() {
- _renderer.setColor(event.getX() / getWidth(), event.getY() / getHeight(), 1.0f);
- }
- });
- return true;
- }
- }
- /*public boolean onTouchEvent(final MotionEvent event) {
- queueEvent(new Runnable(){
- public void run() {
- _renderer.setColor(event.getX() / getWidth(),
- event.getY() / getHeight(), 1.0f);
- }});
- return true;
- }*/
恩,基本上就这些代码,不需要任何布局!更详细的OpenGL知识可以参考计算机图形学!和以往一样,必要的解释都在代码注释中,如有不懂,可以留言提出!如有错误,请留言指出,这些都是些个人学习总结!
- Android的OpenGL学习笔记(1)
- Android的OpenGL学习笔记(2)
- Android的OpenGL学习笔记(3)
- Android的OpenGL学习笔记(4)
- Android的OpenGL学习笔记(5)
- Android的OpenGL学习笔记(6)
- 基于Android的OpenGL ES 2.0学习笔记(1)
- Android OpenGL学习笔记
- Android OpenGL 学习笔记
- Android OpenGL 学习笔记
- 基于Android的OpenGL ES 2.0学习笔记(2)
- OpenGL 学习笔记(1)
- Android 3D 游戏学习笔记(1)-openGL基础
- android OpenGL学习笔记(一)
- Android OpenGL学习笔记(一)
- Android OpenGL学习笔记(一)
- Android OpenGL 学习笔记 01
- OPENGL学习笔记1
- 心情不好
- 中秋~~~
- 矛盾
- 01串的排序问题_算法
- 高级字符设备驱动02
- Android的OpenGL学习笔记(1)
- js语法、函数
- Android的OpenGL学习笔记(2)
- Servlet中的重定向和请求分派
- 图的最短路径实现最优停车
- 大学生素质
- Java 第一课
- jsp复习精华
- 只能用intialization list 而不能用assignment