Хотите иметь несколько альтернативных вариантов перспективы в GL - PullRequest
0 голосов
/ 12 марта 2012

Итак, я настроил перспективу для своего представления в методе onSurfaceCreate, используя это:

    float size = .01f * (float) Math.tan(Math.toRadians(45.0) / 2);
    float ratio = _width / _height;
    // perspective:
    gl.glFrustumf(-size, size, -size / ratio, size / ratio, 0.01f, 110.0f);

Это более или менее идентично этому уроку:

http://www.droidnova.com/android-3d-game-tutorial-part-vi,436.html

НО я хочу иметь возможность переключаться между 45,0 и другими углами зрения. Когда я пытаюсь изменить значения gl.glFrustumf позже экран гаснет! Я могу вручную установить угол в методе onSurfaceCreate, но не могу понять, как можно переключаться между двумя перспективными видами без перезапуска приложения. Кто-нибудь может помочь?

Спасибо за ваше время

1 Ответ

3 голосов
/ 12 марта 2012

Вы очищаете матрицу проекции перед повторным вызовом glFrustum? OpenGL несколько неинтуитивно умножает матрицу усеченного конуса на предыдущую матрицу в стеке. Если вы вызовете glFrustum несколько раз подряд без сброса матрицы проекции, вы получите бессмысленный результат.

...