please can you explain it a little more? i'm new in open GL.

What you mean with non power of two?

what is POT?

On 3 oct, 17:56, Latimerius <l4t1m3r...@googlemail.com> wrote:
> In my experience, the classic cause of "white" textures on some hardware but
> not other is a non-power-of-two texture.  Your code doesn't seem to enforce
> POT texture dimensions, are your assets POT?
>
>
>
>
>
>
>
> On Mon, Oct 3, 2011 at 5:43 PM, saex <elpablos...@gmail.com> wrote:
> > i have an app that draws a square on the screen with a texture, and
> > the user can rotate the square touching the screen. It works fine with
> > android 1.5 to 2.1. But when i test the App on a Motorola Droid with
> > android 2.2.2 something is failing because the square is loaded with a
> > white texture.
>
> > What is wrong?
>
> > This is the code of my class square:
>
> >    public class Square {
>
> >        /** The buffer holding the vertices */
> >        private FloatBuffer vertexBuffer;
> >        /** The buffer holding the texture coordinates */
> >        private FloatBuffer textureBuffer;
> >        /** Our texture pointer */
> >        private int[] textures = new int[3];
>
> >        /** The initial vertex definition */
> >        private float vertices[] = {
> >                                                -1.0f, -1.0f, 0.0f,
> > //Bottom Left
> >                                                1.0f, -1.0f, 0.0f,
> >    //Bottom Right
> >                                                -1.0f, 1.0f, 0.0f,
> >    //Top Left
> >                                                1.0f, 1.0f, 0.0f
> >    //Top Right
>
> >    };
> >        /** The initial texture coordinates (u, v) */
>
> >        private float texture[] = {
> >                                        //Mapping coordinates for the
> > vertices
> >                                        0.0f, 0.0f,
> >                                        0.0f, 1.0f,
> >                                        1.0f, 0.0f,
> >                                        1.0f, 1.0f
> >                                        };
>
> >        /**
> >         * The Square constructor.
> >         *
> >         * Initiate the buffers.
> >         */
> >        public Square() {
> >                //
> >                ByteBuffer byteBuf =
> > ByteBuffer.allocateDirect(vertices.length * 4);
> >                byteBuf.order(ByteOrder.nativeOrder());
> >                vertexBuffer = byteBuf.asFloatBuffer();
> >                vertexBuffer.put(vertices);
> >                vertexBuffer.position(0);
> >                //
> >                byteBuf = ByteBuffer.allocateDirect(texture.length * 4);
> >                byteBuf.order(ByteOrder.nativeOrder());
> >                textureBuffer = byteBuf.asFloatBuffer();
> >                textureBuffer.put(texture);
> >                textureBuffer.position(0);
> >        }
>
> >        /**
> >         * The object own drawing function.
> >         * Called from the renderer to redraw this instance
> >         * with possible changes in values.
> >         *
> >         * @param gl - The GL Context
> >         */
> >        public void draw(GL10 gl) {
> >                //Set the face rotation
> >                //gl.glFrontFace(GL10.GL_CW);
> >                gl.glFrontFace(GL10.GL_CCW);
> >                //Bind our only previously generated texture in this case
> >                gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
> >                //Point to our vertex buffer
> >                gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
> >                gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
> >                //Enable vertex buffer
> >                gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
> >                gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
> >                //Set The Color To Blue
> >                //gl.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
> >                //Draw the vertices as triangle strip
> >                gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length /
> > 3);
> >                //Disable the client state before leaving
> >                gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
> >                gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
>
> >                ///
> >                //Bind the texture according to the set texture filter
> >                //gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[filter]);
> >        }
>
> >        /**
> >         * Load the textures
> >         *
> >         * @param gl - The GL Context
> >         * @param context - The Activity context
> >         */
> >        public void loadGLTexture(GL10 gl, Context context) {
> >                //Generate one texture pointer...
> >                gl.glGenTextures(1, textures, 0);
> >                //...and bind it to our array
> >                gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
> >                //Create Nearest Filtered Texture
> >                gl.glTexParameterf(GL10.GL_TEXTURE_2D,
> > GL10.GL_TEXTURE_MIN_FILTER,
> > GL10.GL_NEAREST);
> >                gl.glTexParameterf(GL10.GL_TEXTURE_2D,
> > GL10.GL_TEXTURE_MAG_FILTER,
> > GL10.GL_LINEAR);
>
> >                //Different possible texture parameters, e.g.
> > GL10.GL_CLAMP_TO_EDGE
> >                gl.glTexParameterf(GL10.GL_TEXTURE_2D,
> > GL10.GL_TEXTURE_WRAP_S,
> > GL10.GL_REPEAT);
> >                gl.glTexParameterf(GL10.GL_TEXTURE_2D,
> > GL10.GL_TEXTURE_WRAP_T,
> > GL10.GL_REPEAT);
>
> >                //Get the texture from the Android resource directory
> >                InputStream is =
> > context.getResources().openRawResource(R.drawable.radiocd2);
> >                Bitmap bitmap = null;
> >                try {
> >                        //BitmapFactory is an Android graphics utility for
> > images
> >                        bitmap = BitmapFactory.decodeStream(is);
>
> >                } finally {
> >                        //Always clear and close
> >                        try {
> >                                is.close();
> >                                is = null;
> >                        } catch (IOException e) {
> >                        }
> >                }
>
> >                //Use the Android GLUtils to specify a two-dimensional
> > texture image
> > from our bitmap
> >                GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
>
> >                /*
> >                 * This is a change to the original tutorial, as buildMipMap
> > does
> > not exist anymore
> >                 * in the Android SDK.
> >                 *
> >                 * We check if the GL context is version 1.1 and generate
> > MipMaps by
> > flag.
> >                 * Otherwise we call our own buildMipMap implementation
> >                 */
> >                if(gl instanceof GL11) {
> >                        gl.glTexParameterf(GL11.GL_TEXTURE_2D,
> > GL11.GL_GENERATE_MIPMAP,
> > GL11.GL_TRUE);
> >                        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap,
> > 0);
>
> >                //
> >                } else {
> >                        buildMipmap(gl, bitmap);
> >                }
>
> >                //Clean up
> >                bitmap.recycle();
> >        }
>
> >        /**
> >         * Our own MipMap generation implementation.
> >         * Scale the original bitmap down, always by factor two,
> >         * and set it as new mipmap level.
> >         *
> >         * Thanks to Mike Miller (with minor changes)!
> >         *
> >         * @param gl - The GL Context
> >         * @param bitmap - The bitmap to mipmap
> >         */
> >        private void buildMipmap(GL10 gl, Bitmap bitmap) {
> >                //
> >                int level = 0;
> >                //
> >                int height = bitmap.getHeight();
> >                int width = bitmap.getWidth();
>
> >                //
> >                while(height >= 1 || width >= 1) {
> >                        //First of all, generate the texture from our bitmap
> > and set it to
> > the according level
> >                        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, level,
> > bitmap, 0);
>
> >                        //
> >                        if(height == 1 || width == 1) {
> >                                break;
> >                        }
>
> >                        //Increase the mipmap level
> >                        level++;
>
> >                        //
> >                        height /= 2;
> >                        width /= 2;
> >                        Bitmap bitmap2 = Bitmap.createScaledBitmap(bitmap,
> > width, height,
> > true);
>
> >                        //Clean up
> >                        bitmap.recycle();
> >                        bitmap = bitmap2;
> >                }
> >        }
> >    }
>
> > --
> > 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

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