ここに私の問題があります:レンダラーなどを備えた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);
}
}