您的位置:首页 > 运维架构

OpenGJ的一个简单事例,实现点击变颜色

2011-09-19 14:09 411 查看
1 在MainActivity中实现一下代码:

public class MainActivity extends Activity {

OpenGLView mOpenGLView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//设置全屏

requestWindowFeature(Window.FEATURE_NO_TITLE);

//去标题栏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.main);

mOpenGLView = new OpenGLView(this);

setContentView(mOpenGLView);

//检测网络是否连接

Log.i("other",utils.detect(this)+"");

}

}

2 新建一个OpenGLRenderer 继承 Renderer

public class OpenGLRenderer implements Renderer {

private float cr,cg,cb;

//自定义一个方法

public void setColor(float r,float g,float b){

cr = r;

cg = g;

cb = b;

}

@Override

public void onSurfaceCreated(GL10 gl, EGLConfig config) {

// 设置输出屏幕大小

//启用smooth shading(阴影平滑)。阴影平滑通过多边形精细的混合色彩,并对外部光进行平滑,在以后的课程中会看到他的效果。

gl.glShadeModel(GL10.GL_SMOOTH);

//设置清除屏幕时所用的颜色

gl.glClearDepthf(1.0f);

gl.glEnable(GL10.GL_DEPTH_TEST);

gl.glDepthFunc(GL10.GL_LEQUAL);

//上面三行是关于depth buffer(深度缓存)的

//OpenGL我们希望进行最好的透视修正

gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);

}

@Override

public void onSurfaceChanged(GL10 gl, int width, int height) {

// 设置输出屏幕大小

gl.glViewport(0, 0, width, height);

}

@Override

public void onDrawFrame(GL10 gl) {

//清除屏幕和深度缓存

gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);

//重置当前的模型观察矩阵。

gl.glLoadIdentity();

gl.glClearColor(cr, cg, cb, 0.0f);

}

}

3 写一个类OpenGLView 继承GLSurfaceView

public class OpenGLView extends GLSurfaceView {

OpenGLRenderer mRenderer;

public OpenGLView(Context context) {

super(context);

mRenderer = new OpenGLRenderer();

setRenderer(mRenderer);

// TODO Auto-generated constructor stub

}

@Override

public boolean onTouchEvent(final MotionEvent event) {

queueEvent(new Runnable(){

@Override

public void run() {

mRenderer.setColor(event.getX()/getWidth(), event.getY()/getHeight(), 1.0f);

}

});

return super.onTouchEvent(event);

}

}

这样就OK了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: