I solved it today simply set a differente EGLConfigChooser... from: this.setEGLConfigChooser(5, 6, 5, 8, 16, 0);
to: this.setEGLConfigChooser(8 8, 8, 8, 16, 0); It seems to work well, now. But I don't know why.... :( On 22 Lug, 11:38, Paolo <[email protected]> wrote: > Hi there! > I've the same problem... Have you solve it? Please let me know. > Thanks > > Paolo > > On 5 Lug, 14:41, Aidan C <[email protected]> wrote: > > > > > Hey Guys, > > > I've made some edits to my application but I'm pretty sure it crashing > > is linked to my updating my Nexus One. I've included the error as well > > as all code I think is relevant. Anyone got any ideas? > > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): FATAL EXCEPTION: > > GLThread 11 > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): > > java.lang.IllegalArgumentException: No config chosen > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): at > > android.opengl.GLSurfaceView > > $BaseConfigChooser.chooseConfig(GLSurfaceView.java:771) > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): at > > android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916) > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): at > > android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java: > > 1246) > > 07-05 12:07:04.292: ERROR/AndroidRuntime(5751): at > > android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116) > > > public class GLCamTest extends Activity { > > private CamLayer mPreview; > > private GLLayer glView; > > static int counter=0; > > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > counter++; > > } > > > /** Called when the activity is first created. */ > > @Override > > public void onResume() { > > super.onResume(); > > > this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); > > > final Window win = getWindow(); > > win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, > > WindowManager.LayoutParams.FLAG_FULLSCREEN); > > > // Hide the window title. > > requestWindowFeature(Window.FEATURE_NO_TITLE); > > > glView=new GLLayer(this); > > > mPreview = new CamLayer(this, glView); > > > setContentView(glView); > > addContentView(mPreview, new > > LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); > > } > > protected void onPause() { > > super.onPause(); > > if (counter>=2) { > > System.exit(0); > > } > > } > > > } > > > public class GLLayer extends GLSurfaceView implements > > SurfaceHolder.Callback, > > Camera.PreviewCallback, Renderer { > > > int onDrawFrameCounter=1; > > int[] cameraTexture; > > byte[] glCameraFrame=new byte[256*256]; //size of a texture > > must be a power of 2 > > FloatBuffer cubeBuff; > > FloatBuffer texBuff; > > > public GLLayer(Context c) { > > super(c); > > > this.setEGLConfigChooser(5, 6, 5, 8, 16, 0); > > this.setRenderer(this); > > this.getHolder().setFormat(PixelFormat.TRANSLUCENT); > > } > > > public void onDrawFrame(GL10 gl) { > > onDrawFrameCounter++; > > > gl.glEnable(GL10.GL_TEXTURE_2D); > > gl.glClear(GL10.GL_COLOR_BUFFER_BIT | > > GL10.GL_DEPTH_BUFFER_BIT); > > > bindCameraTexture(gl); > > > gl.glLoadIdentity(); > > GLU.gluLookAt(gl, 0, 0, 4.2f, 0, 0, 0, 0, 1, 0); > > > gl.glRotatef(onDrawFrameCounter,1,0,0); //Rotate the > > camera image > > gl.glRotatef((float)Math.sin(onDrawFrameCounter/ > > 20.0f)*40,0,1,0); //Rotate the camera image > > gl.glRotatef((float)Math.cos(onDrawFrameCounter/ > > 40.0f)*40,0,0,1); //Rotate the camera image > > > gl.glNormal3f(0,0,1); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,12, 4); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,16, 4); > > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,20, 4); > > } > > > public void onSurfaceChanged(GL10 gl, int width, int height) { > > gl.glViewport(0, 0, width, height); > > > float ratio = (float) width / height; > > gl.glMatrixMode(GL10.GL_PROJECTION); > > gl.glLoadIdentity(); > > gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); > > > gl.glMatrixMode(GL10.GL_MODELVIEW); > > gl.glLoadIdentity(); > > GLU.gluLookAt(gl, 0, 0, 4.2f, 0, 0, 0, 0, 1, > > 0); > > } > > > public void onSurfaceCreated(GL10 gl, EGLConfig config) { > > gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, > > GL10.GL_FASTEST); > > > gl.glClearColor(0, 0, 0, 0); > > gl.glEnable(GL10.GL_CULL_FACE); > > gl.glShadeModel(GL10.GL_SMOOTH); > > gl.glEnable(GL10.GL_DEPTH_TEST); > > > cubeBuff = makeFloatBuffer(camObjCoord); > > texBuff = > > makeFloatBuffer(camTexCoords); > > gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff); > > gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); > > gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff); > > gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); > > } > > > /** > > * Generates a texture from the black and white array filled > > by the onPreviewFrame > > * method. > > */ > > void bindCameraTexture(GL10 gl) { > > synchronized(this) { > > if (cameraTexture==null) > > cameraTexture=new int[1]; > > else > > gl.glDeleteTextures(1, cameraTexture, > > 0); > > > gl.glGenTextures(1, cameraTexture, 0); > > int tex = cameraTexture[0]; > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex); > > gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, > > GL10.GL_LUMINANCE, 256, 256, 0, GL10.GL_LUMINANCE, > > GL10.GL_UNSIGNED_BYTE, ByteBuffer.wrap(glCameraFrame)); > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > > GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); > > } > > } > > > /** > > * This method is called if a new image from the camera > > arrived. The camera > > * delivers images in a yuv color format. It is converted to a > > black and white > > * image with a size of 256x256 pixels (only a fraction of the > > resulting image > > * is used). Afterwards Rendering the frame (in the main loop > > thread) is started by > > * setting the newFrameLock to true. > > */ > > public void onPreviewFrame(byte[] yuvs, Camera camera) > > { > > int bwCounter=0; > > int yuvsCounter=0; > > for (int y=0;y<160;y++) { > > System.arraycopy(yuvs, yuvsCounter, glCameraFrame, > > bwCounter, 240); > > yuvsCounter=yuvsCounter+240; > > bwCounter=bwCounter+256; > > } > > } > > > FloatBuffer makeFloatBuffer(float[] arr) { > > ByteBuffer bb = > > ByteBuffer.allocateDirect(arr.length*4); > > bb.order(ByteOrder.nativeOrder()); > > FloatBuffer fb = bb.asFloatBuffer(); > > fb.put(arr); > > fb.position(0); > > return fb; > > } > > > final static float camObjCoord[] = new float[] { > > // FRONT > > -2.0f, -1.5f, 2.0f, > > 2.0f, -1.5f, 2.0f, > > -2.0f, 1.5f, 2.0f, > > 2.0f, 1.5f, 2.0f, > > // BACK > > -2.0f, -1.5f, -2.0f, > > -2.0f, 1.5f, -2.0f, > > 2.0f, -1.5f, -2.0f, > > 2.0f, 1.5f, -2.0f, > > // LEFT > > -2.0f, -1.5f, 2.0f, > > -2.0f, 1.5f, 2.0f, > > -2.0f, -1.5f, -2.0f, > > -2.0f, 1.5f, -2.0f, > > // RIGHT > > 2.0f, -1.5f, -2.0f, > > 2.0f, 1.5f, -2.0f, > > 2.0f, -1.5f, 2.0f, > > 2.0f, 1.5f, 2.0f, > > // TOP > > -2.0f, 1.5f, > > ... > > leggi tutto -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

