在OpenGL android中设置背景

时间:2012-01-27 07:38:23

标签: android opengl-es

我是OpenGL编程的新手。我在立方体的不同面上制作了一个带有不同图像的旋转立方体。我想为屏幕设置背景。任何帮助都将受到赞赏..

3 个答案:

答案 0 :(得分:5)

绘制覆盖整个视口的纹理四边形。为此,请将投影和模型视图切换为标识并禁用深度测试。使用投影和模型视图时,顶点坐标[-1 ... 1]将覆盖整个视口。在代码中:

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

答案 1 :(得分:4)

在我的项目中,所有创建GLSurfaceView的代码如下:

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(...);

注意:请勿使用

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

我浪费了几天时间。

不要打电话

gl.glClearColor(...)

Renderer.onDrawFrame

答案 2 :(得分:-1)

我认为OP希望将他的代码转换为Android动态壁纸。

@Sumit:如果我是对的,你应该尽职尽责:http://developer.android.com/resources/articles/live-wallpapers.html

如果我错了,请在问题中更加准确。