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
-~----------~----~----~----~------~----~------~--~---

Reply via email to