OpenGL ES на Android - PullRequest
       13

OpenGL ES на Android

0 голосов
/ 04 ноября 2011

Итак, я пытаюсь сделать 3D-графику для класса. Сейчас я работаю над пониманием OpenGL и ужасно терплю неудачу. Я хочу переместить камеру, но я вообще не могу. Почему это не работает?

public class G3DRenderer implements GLSurfaceView.Renderer, OnTouchListener {
    float[] camera = {0, 0, 0.5f}, focus = {0, 0, 0}, orientation = {0, 1, 0};

    Square square;

    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
        gl.glShadeModel(GL10.GL_SMOOTH);
        gl.glClearDepthf(1.0f);
        gl.glEnable(GL10.GL_DEPTH_TEST);
        gl.glDepthFunc(GL10.GL_LEQUAL);
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);

        float v = 1.0f;
        int c = 0xFFFFFF;
        square = new Square(
            new float[] {
                -v, v, 0,
                -v, -v, 0,
                v, v, 0,
                v, -v, 0,
            },
            new short[] {0, 1, 2, 3},
            new int[] {
                c, 0, 0, c,
                0, c, 0, c,
                0, 0, c, c,
                c, c, c, 0,
            }
        );
    }

    private void look(GL10 gl) {
        GLU.gluLookAt(gl,
            camera[0], camera[1], camera[2],
            focus[0], focus[1], focus[2],
            orientation[0], orientation[1], orientation[2]
        );
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        int dim = Math.min(width, height);
        gl.glViewport(0, 0, dim, dim);
        gl.glMatrixMode(GL10.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glFrustumf(-1.0f, 1.0f, -1.0f, 1.0f, -1.0f, 1.0f);
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        gl.glLoadIdentity();
        look(gl);
    }

    @Override
    public void onDrawFrame(GL10 gl) {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        square.draw(gl);
        look(gl);
    }

    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        // TODO Auto-generated method stub
        return false;
    }
}

1 Ответ

0 голосов
/ 11 ноября 2011

Очевидно, что значения z ближний / дальний должны быть> 0.Никто не сказал мне это.Так что для всех, кто интересуется, почему все ужасно сломано, убедитесь, что это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...