I tried the program as shown in book OpenGL ES2 for Android, but it's not working!!
I have tested in 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:
Below are my code
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();
}
}
The class MySurface :
public class MySurface extends GLSurfaceView{
public MySurface(Context context) {
super(context);
// TODO Auto-generated constructor stub
setEGLContextClientVersion(2);
setRenderer(new MyTestRenderer(getContext()));
}
}
Avanz
The problem is with glSurfaceView, as it does not run on the OpenGL thread. The glSurfaceView should be on the main android thread.
Here you find additional info about it:
opengl es api with no current context
OpenGL ES 2.0 Context in Android
Hope this help.
来源:https://stackoverflow.com/questions/20159821/opengl-es-not-working-no-current-context