我正在使用https://github.com/markfguerra/GLWallpaperService/制作android动态壁纸。
我正在尝试将png文件加载为全屏背景,但是目前我所得到的只是黑屏。

我已经搜索了几天,但仍然没有发现问题。
我正在执行以下操作:

public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
        gl.glEnable(GL10.GL_TEXTURE_2D);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
}


每帧:

public void onDrawFrame(GL10 gl)
{
        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.target00074);
        int[] textures = new int[1];
        gl.glGenTextures(1, textures, 0);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
}

最佳答案

我真的建议您深入了解OpenGL基础知识,因为您似乎不知道自己在做什么。屏幕是黑色的,因为您只是在上载纹理(在初始化而不是在每一帧时应执行的操作),而实际上并未绘制任何内容。您将需要定义一些数组,这些数组定义一个起点的顶点和纹理位置。请参阅http://blog.jayway.com/2009/12/04/opengl-es-tutorial-for-android-%E2%80%93-part-ii-building-a-polygon/

对于全屏背景,您可以使用纹理创建一个多边形

10-08 14:02