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

 

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)+"");
      
    }
}

  新建一个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);

 }


}
写一个类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了

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值