19

本 OpenGL ES2 for Android に示されているプログラムを試しましたが、動作しません!!

Odroid E、samsung s3、samsung y、samsung 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()));
    }

 }
4

1 に答える 1

19

問題は、OpenGL スレッドで実行されない glSurfaceView にあります。glSurfaceView は Android のメイン スレッドにある必要があります。

ここにそれに関する追加情報があります:

現在のコンテキストのないopengl es api

Android の OpenGL ES 2.0 コンテキスト

この助けを願っています。

于 2013-11-23T07:49:26.360 に答える