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了