sumit pandey
sumit pandey

Reputation: 1221

Setting Background in OpenGL android

I am new to OpenGL programming.I have made a rotating cube with different images on different faces of the cube..i want to set background for the Screen..Any help will be appreciated..

Upvotes: 3

Views: 4505

Answers (3)

npakudin
npakudin

Reputation: 211

In my project all code of creation GLSurfaceView looks like:

glSurfaceView = ...

glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glSurfaceView.setBackgroundResource(R.drawable.my_background);
glSurfaceView.setZOrderOnTop(true);

glSurfaceView.setRenderer(...);
glSurfaceView.setRenderMode(...);

NOTE: Do not use

_glSurfaceView.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.my_background));

I wasted a few days on it.

And do not call

gl.glClearColor(...)

in

Renderer.onDrawFrame

Upvotes: 4

Erik
Erik

Reputation: 812

I think the OP wants to turn his code into an android live wallpaper.

@Sumit : if I'm right you should do your due dilligence: http://developer.android.com/resources/articles/live-wallpapers.html

If I'm wrong, then please be more precise in your question.

Upvotes: -1

datenwolf
datenwolf

Reputation: 162317

Draw a textured quad covering the whole viewport. To do this, switch the projection and modelview to identity and disable depth testing. With projection and modelview being identity vertex coordinates [-1 … 1] will cover the whole viewport. In code:

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

GLfloat tex_quad[16] = {
/* x, y, s, t */
-1, -1, 0, 0,
 1, -1, 1, 0,
 1,  1, 1, 1,
-1,  1, 0, 1
};    

glVertexPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[0]);
glTexCoordPointer(2, GL_FLOAT, sizeof(GLfloat)*4, &tex_quad[2]);

glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, background_image_texture_ID);

glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDisable(GL_TEXTURE_2D);

Upvotes: 5

Related Questions