Android OpenGL demo “No config chosen”

2019-01-26 03:41发布

问题:

I'm having a real problem with the Google's OpenGL demo for Android. I set it up in Eclipse but can't get it to execute. It builds with no problems, but then stops at "java.lang.IllegalArgumentException: No config chosen" right before it opens. I've been up and down Google searches and Stack threads with no solution.

I did find what I thought was a lead here: OpenGL ES 2.0 Support for Android?

It uses a command gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0); but alas, I'm new to OpenGL on android and don't know where to put it...

Any help would be greatly appreciated. I'm running Eclipse Juno with the latest android sdk. I'm testing this on a 4.2 Jelly Bean emulator with GPU hardware enabled.

回答1:

The solution was just to place super.setEGLConfigChooser(8 , 8, 8, 8, 16, 0); inside the MyGLSurfaceView class right before the setRenderer(new MyGLRenderer()); line.



回答2:

This is quite old now, but just in case people are still wondering why this needs to be done....

setEGLConfigChooser(int redSize, int greenSize, int blueSize, int alphaSize, 
                    int depthSize, int stencilSize)

The parameters are the number of bits you assign to the color bits

8 bits = 255 16 bits = 65535

So the below configuration is basically setting this:

setEGLConfigChooser(8, 8, 8, 8, 16, 0);

r,g,b,a = 0-255,0-255,0-255,0-255

depth = 0-65535

stencil = 0

Hope this clears up any confusion :D



回答3:

See my code for setting EGL chooser with Android Studio. Add it right after you call the constructor for your GLSurfaceView:

Code:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GLSurfaceView view = new GLSurfaceView(this);

        //Chose EGL Config Here To Set Element Size For RGB data Alpha,  
        // Depth, Stencil, See The Documentation...
        view.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

        view.setRenderer(new OpenGLRenderer());
        setContentView(view);

        //setContentView(R.layout.activity_main);
    }

    //....additional methods for activity

}