Fireplace April 2026

Android 2.3.3 - Scheitern an Beispielcode zu OpenGL ES 2.0

AP Nova

Commander
Registriert
Juni 2008
Beiträge
2.256
edit: Gelöst, siehe unten

Ich versuche wie hier beschrieben OpenGL ES 2.0 zu nutzen. So wie ich das sehe, habe ich alles genau so übernommen wie es da steht, doch will ich das ausführen, bekomme ich von Eclipse die Meldung "Source not found.", was bei Auskommentieren von drei Zeilen (17, 31, 33) nicht passiert, allerdings kann ich dann OpenGL natürlich auch nicht mehr nutzen. Zum Testen nutze ich nicht das Virtual Device, dass OpenGL 2.0 darauf nicht läuft, habe ich schon gelesen, sondern ein Galaxy Ace 2 mit 2.3.6 drauf. (Ich kompiliere für 2.3.3)

Wie beschrieben, in AndroidManifest.xml steht "<uses-feature android:glEsVersion="0x00020000" android:required="true" />", desweiteren die Klasse für meine Activity:
Code:
package com.example.stapelspiel;

import android.app.Activity;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.os.Bundle;

public class MainActivity extends Activity {

	private GLSurfaceView mGLView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mGLView = new MyGLSurfaceView(this);
        setContentView(mGLView); //Fehler ohne Auskommentieren
    }
    
    class MyGLSurfaceView extends GLSurfaceView
    {
    	public MyGLSurfaceView(Context context)
    	{
    		super(context);
    		setRenderer(new MyGL20Renderer()); //Fehler ohne Auskommentieren
    		setEGLContextClientVersion(2);
    		setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); //Fehler ohne Auskommentieren
    	}
    }

}
Und der Renderer:
Code:
package com.example.stapelspiel;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;

public class MyGL20Renderer implements GLSurfaceView.Renderer
{
	public void onSurfaceCreated(GL10 unused, EGLConfig config)
	{
		GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
	}
	
	public void onDrawFrame(GL10 unused)
	{
		GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
	}
	
	public void onSurfaceChanged(GL10 unused, int width, int height)
	{
		GLES20.glViewport(0,  0, width, height);
	}
}

Weiß jemand, wo der Fehler hier liegt? Oder läuft OpenGL 2.0 auf dem Ace 2 eventuell einfach gar nicht? Zum Gerät selbst findet man da nicht wirklich was und mit Android 2.2 scheint das eingeführt worden zu sein, weshalb ich denke, dass es unterstützt sein sollte.

Danke im Voraus
Ergänzung ()

Ich habe die Lösung gefunden
Code:
setEGLContextClientVersion(2);
muss vor
Code:
setRenderer(new MyGL20Renderer()); //Fehler ohne Auskommentieren
, was in dem Beispiel in genau anderer Reihenfolge Erwähnung findet bzw. es wird nicht gesagt, dass wichtig ist, wo man ersteres platziert.

Trotzdem danke für alle, die helfen wollten
 
Zuletzt bearbeitet:
Zurück
Oben