当前位置: 首页 > 知识库问答 >
问题:

OPENGL ES不工作:no当前上下文

岳景明
2023-03-14

我尝试了《Android版OpenGL ES2》一书中所示的程序,但它不起作用!!

我在Odroid E、三星s3、三星y、三星star中测试过!!

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()));
    }

 }

共有1个答案

叶元凯
2023-03-14

问题在于glSurfaceView,因为它不在OpenGL线程上运行。glSurfaceView应该在Android的主线程上。

在这里您可以找到有关它的其他信息:

没有当前上下文的opengl es api

Android中的OpenGL ES 2.0上下文

希望这有帮助。

 类似资料:
  • 下面是我的表格: 截取方法如下: 我添加了以下bean:

  • 我遇到了与这里提到的问题类似的问题。我使用的是spring xml配置。我指定了我的全局AWS上下文凭据。我正在使用S3出站通道适配器从S3下载一个文件。我在config.properties文件中指定了我的键。我仍然看不出用来和S3谈话的凭据。 s3-read.xml aws-credentials.xml 配置属性 例外情况是: 我在这方面花了很多时间。当我尝试调试时,它似乎在寻找默认的凭据提

  • 问题内容: 最近,在使用PyCharm时,我无法在代码中使用相对路径。例如,一个简单的将不起作用- 因此,我确定该文件与正在运行的py文件位于同一级别。PyCharm将返回此错误。 FileNotFoundError:[错误2]没有这样的文件或目录: 在StackOverflow上在线阅读答案后,我尝试了多种选择,包括: 更改为 关闭项目,删除.idea文件夹,使用代码打开该文件夹。 重新安装以及

  • setCurrentSheetHide(): self 实例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ $excel->fileName('hide.xlsx', 'sheet1') // 初始化文件,同时初始化第一张工作表 sheet1 ->header(['sheet

  • 我已经运行了,然后 退货 我知道我的当前有问题。下面是从 我真的不知道该怎么设置,因为我目前对终端非常陌生。任何帮助都将不胜感激。非常感谢。