这是我的问题:我有一个带有渲染器和东西的 GLSurfaceView。在较旧的 Android 版本上,一切都如我所愿。但在较新的版本(我猜 > 4.X)上,它只显示没有任何位图的黑屏。例如,如果我gl.glClearColor(0.1f, 0.2f, 0.3f, 0.5f);
在我的 onSurfaceCreated 方法中使用,它会从黑色变为彩色。所以我认为问题一定是相机看错了方向或什么的,因为背景颜色被绘制了。
由于我对 OpenGL 很陌生,我想问一下 Android 版本和 OpenGL 相机或类似的东西之间是否有任何联系?
很多人说我的 Bitmap-Sizes 必须是 2 的幂,但这并不能解决任何问题。
这是我的渲染器:
public class GlRenderer implements Renderer {
@Override
public void onDrawFrame(GL10 gl) {
// clear Screen Buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// Reset the Modelview Matrix
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -5.0f); // move 5 units INTO the screen
// is the same as moving the camera 5 units away
updateLogic(gl);
drawEverything(gl);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION); // or some matrix uniform if using shaders
gl.glLoadIdentity();
gl.glOrthof(0, width, height, 0, -1, 1); // this will allow to pass vertices in 'canvas pixel' coordinates
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glDisable(GL10.GL_DITHER);
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
gl.glEnable(GL10.GL_TEXTURE_2D); //Enable Texture Mapping ( NEW )
gl.glShadeModel(GL10.GL_SMOOTH); //Enable Smooth Shading
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); //Set Background
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}
}