1)  Load your bitmap into a power-of-two texture larger or roughly the
same size as it.  512x512 works or 256x512 if you don't mind losing a
bit of resolution.  I won't post the code for that here.  It's ugly
and there's plenty of examples.

2)  Generate a quad's worth of geometry (it's simple, something like
this, or you can do it with floats if you want, just take out the
shift, make one 1.0f and use the gl "f" methods instead of "x")

int widthx = viewportWidth << 16;
int heightx = viewportHeight << 16;
                verts = createDirectIntBuffer(new int[] {
                // top left
                                0, 0, 0,
                                // top right
                                widthx, 0, 0,
                                // bottom right
                                widthx, heightx, 0,
                                // bottom left
                                0, heightx, 0 });
                int one = 65536;
                tex =  createDirectIntBuffer(new int[] {
                // top left
                                0, 0,
                                // top right
                                one, 0,
                                // bottom right
                                one, one,
                                // bottom left
                                0, one });

2)  On draw:
// configure the projection
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glPushMatrix();
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0, viewportWidth, viewportHeight, 0);
// switch to the model view
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glPushMatrix();
gl.glLoadIdentity();
// turn off depth-test for 2D
gl.glDisable(GL10.GL_DEPTH_TEST);
// draw the quad
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
gl.glFrontFace(GL10.GL_CW);
gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, tex);
gl.glVertexPointer(3, GL10.GL_FIXED, 0, verts);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 4);
gl.glPopMatrix();
// turn back on depth-test for 3D
gl.glEnable(GL10.GL_DEPTH_TEST);
// put the projection back
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glPopMatrix();
gl.glMatrixMode(GL10.GL_MODELVIEW);

I use this for the buffer:
        public static IntBuffer createDirectIntBuffer(int[] values) {
                ByteBuffer vbb = ByteBuffer.allocateDirect(values.length * 4);
                vbb.order(ByteOrder.nativeOrder());
                IntBuffer intBuffer = vbb.asIntBuffer();
                intBuffer.put(values);
                intBuffer.position(0);
                return intBuffer;
        }

On Apr 28, 9:20 am, CMF <manf...@gmail.com> wrote:
> Thank String and Robert,I can create the quad but I would like to know
> how to make the quad with texture(a 320x480 bitmap) best fits with the
> screen?
>
> On Apr 28, 5:17 pm, Robert Green <rbgrn....@gmail.com> wrote:
>
>
>
>
>
> > String is correct on using the matrix stack.  Follow those
> > instructions and also consider just creating a textured quad and
> > rendering it in an orthographic projection.  That's a common practice
> > for a nice, fast, easy background on a 3D scene.  If you want it to
> > look far away just blur and darken it in your favorite 2d graphic
> > editor.
>
> > If you don't know how to set the projection to orthographic or create
> > a quad or set texture coordinates, etc, consider getting the red or
> > blue book on OpenGL.  It's an excellent investment for your first GL
> > project.
>
> > On Apr 28, 2:32 am, String <sterling.ud...@googlemail.com> wrote:
>
> > > On Apr 26, 7:24 am, CMF <manf...@gmail.com> wrote:
>
> > > > Hi all, I would like to ask how to add a static background to the kube
> > > > from the ApiDemo
>
> > > There are two ways that immediately occur to me. First, make it
> > > translucent and put it on top of a view containing your background
> > > image. See
> > > com.example.android.apis.graphics.TranslucentGLSurfaceViewActivity for
> > > an example.
>
> > > > I have created a sqaure behind the Kube, but it will rotate as the
> > > > kube does
>
> > > And this is the other approach. To make the cube rotate independently
> > > of your background, you should be able to restore the unrotated model-
> > > view matrix before your background-rendering code. Something like
> > > this:
>
> > >         gl.glMatrixMode(GL10.GL_MODELVIEW);
> > >         gl.glLoadIdentity();
> > >         gl.glTranslatef(0, 0, -3.0f);
> > >         gl.glScalef(0.5f, 0.5f, 0.5f);
>
> > >         gl.glPushMatrix();  // This saves the unrotated matrix
> > >         gl.glRotatef(mAngle,        0, 1, 0);
> > >         gl.glRotatef(mAngle*0.25f,  1, 0, 0);
> > >         mWorld.draw(gl);
> > >         gl.glPopMatrix();  // This restores the unrotated matrix
>
> > >         // Put your background-drawing code here
>
> > > I haven't tested the above code (it was written on the fly for this
> > > response) but that's the basic idea. I use that technique in a couple
> > > of places in various OpenGL apps.
>
> > > String
>
> > > --
> > > 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 
> > > athttp://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 
> > athttp://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 
> athttp://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