2012-01-27 34 views

回答

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

错误:E/libEGL:所谓的未实现的OpenGL ES API – 2017-12-30 12:15:00

3

在我的项目创造的所有代码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