Ich arbeite gerade an der Konvertierung von Android San-Angeles-Beispiel in OpenGL ES 2.0, anstatt der aktuellen 1.0 (mit meiner eigenen Version von Demo). Ich erhalte gerade diesen Fehler, und ich kann einfach nicht herausfinden, wo ich falsch liege.Nachrüstungen OpenGL 1.0 bis 2.0 in Android NDK
06-24 11:02:48.246 2528-2528/com.example.SanAngeles E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.SanAngeles, PID: 2528
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.SanAngeles/com.example.SanAngeles.DemoActivity}: java.lang.IllegalStateException: setRenderer has already been called for this instance.
Hier ist mein DemoActivity (was ich die Frage annehmen ist in): Paket com.example.SanAngeles;
import android.app.Activity;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.MotionEvent;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class DemoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGLView = new DemoGLSurfaceView(this);
setContentView(mGLView);
}
private GLSurfaceView mGLView;
static {
System.loadLibrary("sanangeles");
}
}
class DemoGLSurfaceView extends GLSurfaceView {
public DemoGLSurfaceView(Context context) {
super(context);
setEGLContextClientVersion(2);
mRenderer = new DemoRenderer();
setRenderer(mRenderer);
}
public boolean onTouchEvent(final MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
nativeTogglePauseResume();
}
return true;
}
DemoRenderer mRenderer;
private static native void nativeTogglePauseResume();
}
class DemoRenderer implements GLSurfaceView.Renderer {
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
nativeInit();
}
public void onSurfaceChanged(GL10 gl, int w, int h) {
//gl.glViewport(0, 0, w, h);
nativeResize(w, h);
}
public void onDrawFrame(GL10 gl) {
nativeRender();
}
private static native void nativeInit();
private static native void nativeResize(int w, int h);
private static native void nativeRender();
private static native void nativeDone();
}
Ist dies der Code für die gesamte Aktivität? Haben Sie einen Code in Ihren onStart() - oder onResume() -Methoden? – brohan322