now i found the problem is in the following code.Maybe the following process loses some important data;can give me some code about this? 现在我确定问题是在下面的对bmp图片作处理过程导致丢失了一些重要信息,或下面的算法有问题,有没有人有这方面的算法代码?
ByteBuffer bb = ByteBuffer.allocateDirect(bmp.getHeight() *bmp.getWidth()*4); bb.order(ByteOrder.BIG_ENDIAN); IntBuffer ib = bb.asIntBuffer(); System.out.println("k=0 loadTexture 22222 in GLTutorialBase"); for (int y=bmp.getHeight()-1;y>-1;y--) for (int x=0;x<bmp.getWidth();x++) { int pix = bmp.getPixel(x,bmp.getHeight()-y-1); // Convert ARGB -> RGBA @SuppressWarnings("unused") byte alpha = (byte)((pix >> 24)&0xFF); byte red = (byte)((pix >> 16)&0xFF); byte green = (byte)((pix >> 8)&0xFF); byte blue = (byte)((pix)&0xFF); // It seems like alpha is currently broken in Android... ib.put(red << 24 | green << 16 | blue << 8 | 0xFF);//255-alpha); } System.out.println("k=0 loadTexture 33333 in GLTutorialBase"); ib.position(0); bb.position(0); On 5月14日, 上午11时50分, xiaofeng <rwgcz...@163.com> wrote: > this is my code!是不是loadTexture里有问题? > > protected static int loadTexture(GL10 gl,Bitmap bmp, boolean > reverseRGB) { > > System.out.println("Eenter loadTexture in GLTutorialBase"); > int[] tmp_texture = new int[1]; > gl.glGenTextures(1, tmp_texture, 0); > int texture = tmp_texture[0] ;//QQ > > System.out.println("k=0 loadTexture 11111 in GLTutorialBase"); > ByteBuffer bb = ByteBuffer.allocateDirect(bmp.getHeight() > *bmp.getWidth()*4); > bb.order(ByteOrder.BIG_ENDIAN); > IntBuffer ib = bb.asIntBuffer(); > System.out.println("k=0 loadTexture 22222 in > GLTutorialBase"); > > for (int y=bmp.getHeight()-1;y>-1;y--) > for (int x=0;x<bmp.getWidth();x++) { > int pix = bmp.getPixel(x,bmp.getHeight()-y-1); > // Convert ARGB -> RGBA > @SuppressWarnings("unused") > byte alpha = (byte)((pix >> 24)&0xFF); > byte red = (byte)((pix >> 16)&0xFF); > byte green = (byte)((pix >> 8)&0xFF); > byte blue = (byte)((pix)&0xFF); > > // It seems like alpha is currently broken in > Android... > ib.put(red << 24 | green << 16 | blue << 8 | > 0xFF);//255-alpha); > } > > System.out.println("k=0 loadTexture 33333 in > GLTutorialBase"); > > ib.position(0); > bb.position(0); > gl.glBindTexture(GL10.GL_TEXTURE_2D, texture); > gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, > bmp.getWidth(), bmp.getHeight(), 0, GL10.GL_RGBA, > GL10.GL_UNSIGNED_BYTE, bb); > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); > tmp_texture=null; > ib.position(0); > bb.position(0); > ib.clear(); > bb.clear(); > System.out.println("k =0 Leave loadTexture in > GLTutorialBase"); > return texture; > > } > > protected void init(GL10 gl) { > gl.glEnable(GL10.GL_LIGHTING); > gl.glEnable(GL10.GL_LIGHT0); > > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbient, > 0); > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightDiffuse, > 0); > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, 0); > > gl.glEnable(GL10.GL_DEPTH_TEST); > gl.glClearDepthf(1.0f); > gl.glEnable(GL10.GL_TEXTURE_2D); > gl.glEnable(GL10.GL_CULL_FACE); > gl.glEnable(GL10.GL_CULL_FACE) ; > gl.glCullFace(GL10.GL_BACK); > gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); > gl.glClearDepthf(1.0f); > > 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); > > gl.glShadeModel(GL10.GL_SMOOTH); > > tex = loadTexture(gl, bmp0); > tex1 = loadTexture(gl, bmp1); > tex2 = loadTexture(gl, bmp2); > tex3 = loadTexture(gl,bmp3); > > gl.glFogf(GL10.GL_FOG_MODE, GL10.GL_EXP);; > gl.glFogfv(GL10.GL_FOG_COLOR, fogColor, 0); > gl.glFogf(GL10.GL_FOG_DENSITY, 0.75f); > gl.glHint(GL10.GL_FOG_HINT, GL10.GL_DONT_CARE); > gl.glFogf(GL10.GL_FOG_START, 1.0f); > gl.glFogf(GL10.GL_FOG_END, 5.0f); > gl.glEnable(GL10.GL_FOG); > } > protected void drawFrame(GL10 gl) { > if (fog) { > gl.glEnable(GL10.GL_FOG); > } > else { > gl.glDisable(GL10.GL_FOG); > } > > gl.glClear(GL10.GL_COLOR_BUFFER_BIT | > GL10.GL_DEPTH_BUFFER_BIT); > > gl.glMatrixMode(GL10.GL_MODELVIEW); > gl.glLoadIdentity(); > GLU.gluLookAt(gl, 0, 0, 3, 0, 0, 0, 0, 1, 0); > gl.glPushMatrix(); > > gl.glRotatef(yrot, 0, 1, 0); > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex); > gl.glEnable(GL10.GL_TEXTURE_2D); > gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, > matAmbient, > 0); > gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, > matDiffuse, > 0); > > gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff); > gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); > gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); > gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff); > > Log.d(TAG,"before tBefore bind tex1"); > gl.glNormal3f(0,0,1); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); > //gl.glRotatef(-180,0, 0, 1); > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex1); > gl.glNormal3f(0,0,-1); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4); > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex2); > Log.d(TAG,"before Before bind tex2"); > gl.glNormal3f(-1,0,0); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4); > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex3); > Log.d(TAG,"before tBefore bind tex3"); > gl.glNormal3f(1,0,0); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 12, 4); > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex4); > Log.d(TAG,"before tBefore bind tex4"); > gl.glNormal3f(0,1,0); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 16, 4); > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex5); > Log.d(TAG,"before tBefore bind tex5"); > gl.glNormal3f(0,-1,0); > gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 20, 4); > > yrot+=1f; > } > On 5月13日, 下午10时30分, Wendal Chen <wendal1...@gmail.com> wrote: > > > 能贴一下代码吗? > > > 图片也可以 > > > On May 13, 8:31 pm, xiaofeng <rwgcz...@163.com> wrote: > > > > 原来色彩很清楚的图片贴在立方体表面后发黄? > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---