2013-01-05 4 views
22

Tôi đang gặp sự cố thực sự với OpenGL demo for Android của Google. Tôi đã thiết lập nó trong Eclipse nhưng không thể thực hiện nó. Nó xây dựng không có vấn đề gì, nhưng sau đó dừng lại ở "java.lang.IllegalArgumentException: No config chosen" ngay trước khi nó mở ra. Tôi đã lên và xuống các tìm kiếm của Google và các luồng ngăn xếp không có giải pháp.Bản trình diễn OpenGL của Android "Không có cấu hình được chọn"

tôi đã tìm thấy những gì tôi nghĩ là một dẫn ở đây: OpenGL ES 2.0 Support for Android?

Nó sử dụng một lệnh gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0); nhưng than ôi, tôi mới để OpenGL trên android và không biết nơi để đặt nó ...

Mọi trợ giúp sẽ được đánh giá cao. Tôi đang chạy Eclipse Juno với sdk android mới nhất. Tôi đang thử nghiệm này trên một giả lập 4.2 Jelly Bean với phần cứng GPU được kích hoạt.

+0

thể trùng lặp của (http: // stackoverflow. com/questions/13717470/opengl-es-2-0-support-for-android) –

Trả lời

49

Giải pháp chỉ để đặt super.setEGLConfigChooser(8 , 8, 8, 8, 16, 0); bên trong lớp MyGLSurfaceView ngay trước dòng setRenderer(new MyGLRenderer());.

+3

Cảm ơn bạn đã tìm ra điều này, không chắc tại sao hầu như tất cả các ứng dụng mẫu Android đều bị bẻ cong. Nó thực sự gây tổn thương cho những người cố gắng tìm hiểu SDK lần đầu tiên. – thamster

+2

Bạn có thể bỏ qua 'siêu'. – trungly

+0

Cuối cùng tôi tìm ra giải pháp, cảm ơn con người. Bạn có biết tại sao điều này phải được thực hiện mặc dù? Và tại sao nó không có trong mã? – simtaxman

1

Xem mã của tôi để đặt trình chọn EGL bằng Android Studio. Thêm nó ngay sau khi bạn gọi các nhà xây dựng cho GLSurfaceView của bạn:

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 

} 
5

này khá cũ bây giờ, nhưng chỉ trong trường hợp người vẫn đang tự hỏi tại sao điều này cần phải được thực hiện ....

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

các thông số là số bit bạn gán cho các bit màu

8 bit = 255 16 bit = 65535

Vì vậy, các cấu hình dưới đây về cơ bản thiết lập này:

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

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

depth = 0-65535 

stencil = 0 

Hy vọng điều này đã xóa bỏ bất kỳ sự nhầm lẫn: [? OpenGL ES 2.0 hỗ trợ dành cho Android] D