问题
I would like to call a GLES20
method when an item from the options menu is selected.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear:
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
break;
// ...
}
}
This does not work since I am in the main
thread and not in GLThread
. It says:
call to OpenGL ES API with no current context (logged once per thread)
But what do I have to do to get things working?
回答1:
I found the answer on my own:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear:
// GLSurfaceView.queueEvent
surface.queueEvent(new Runnable() {
@Override
public void run() {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
});
break;
// ...
}
}
来源:https://stackoverflow.com/questions/5234867/using-opengl-from-the-main-thread-on-android