android – OPENGL ES不工作:否当前上下文

我试过这个程序,如OpenGL ES2 for Android所示,但它不工作!

我已经在Odroid E测试了,三星s3,三星y,三星星!

the gl version suported returns 2,but i get
11-22 15:09:45.804: E/oGl-es v(9047): 2.0:131072
11-22 15:09:45.804: E/libEGL(9047): call to OpenGL ES API with no current context     (logged once per thread)
11-22 15:09:45.804: E/unable to(9047): createShader
11-22 15:09:45.804: E/libEGL(9047): call to OpenGL ES API with no current context (logged once per thread)
11-22 15:09:45.804: E/unable to(9047): createShader
11-22 15:09:45.804: E/libEGL(9047): call to OpenGL ES API with no current context (logged once per thread)
11-22 15:09:45.804: E/Error creating(9047): GL programObject
11-22 15:09:45.812: E/render(9047): set
11-22 15:09:46.062: E/Results of validating program:(9047): 0
11-22 15:09:46.062: E/Results of validating program:(9047): Log:

以下是我的代码

public class Main_OGLT1 extends Activity {

    MySurface mGLSurfaceView;
private boolean renderSet;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mGLSurfaceView = new MySurface(this);//(this); //instantiation

        ActivityManager actMan = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        ConfigurationInfo mConfigInfo = actMan.getDeviceConfigurationInfo();
        boolean isES2Compat = (mConfigInfo.reqGlEsVersion >= 0x20000);
        Log.e("oGl-es v",mConfigInfo.getGlEsVersion()+":"+ mConfigInfo.reqGlEsVersion);
        if(isES2Compat){


            renderSet = true;
            Log.e("render","set");

        }


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main__oglt1,menu);
        return true;
    }

    @Override
    protected void onResume()
    {
        // The activity must call the GL surface view's onResume() on activity onResume().
        super.onResume();
        mGLSurfaceView.onResume();
    }

    @Override
    protected void onPause()
    {
        // The activity must call the GL surface view's onPause() on activity onPause().
        super.onPause();
        mGLSurfaceView.onPause();
    }

}

MySurface类:

public class MySurface extends GLSurfaceView{

    public MySurface(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        setEGLContextClientVersion(2);
        setRenderer(new MyTestRenderer(getContext()));
    }

 }

解决方法

问题在于glSurfaceView,因为它不会在OpenGL线程上运行. glSurfaceView应该在主要的android线程上.

在这里你可以找到关于它的更多信息

opengl es api with no current context

OpenGL ES 2.0 Context in Android

希望这个帮助.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...