glGetIntegerv / glGetFloatv Android NDK - PullRequest
0 голосов
/ 24 марта 2011

Я в настоящее время портирую игру, используя NDK. Я использую нативный OpenGL, и у меня возникают проблемы с использованием функций glGet *.

Вот фрагмент кода:

m_camera.SetViewMatrix(); //just to make sure nothings left from the last render

        int viewport[4];
        glGetIntegerv(GL_VIEWPORT, viewport);

        float proj[16];
        glGetFloatv(GL_PROJECTION_MATRIX, proj);

        float model[16];
        glGetFloatv(GL_MODELVIEW_MATRIX, model);

        m_currentRay.Create(x, y, 0.0f, 1.0f, model, proj, viewport);

Все выглядит хорошо, но кажется, что функции glGet * просто не работают и не возвращают никаких значений.

Я даже пытался инициализировать переменные для определенных значений, но когда вызываются функции glGet *, переменные не изменяются. Например:

int viewport[4];
viewport[0] = 1;
viewport[1] = 2;
viewport[2] = 3;
viewport[3] = 4;

и когда glGetIntegerv (GL_VIEWPORT, область просмотра); называется, видовой экран все тот же. То же самое относится ко всем переменным.

Несколько заметок:

  • Я отлаживаю на HTC Wildfire
  • Использование GLES 1.0
  • Android SDK версии 2.2 (API версии 8)

Буду признателен за любую помощь.

Спасибо!

1 Ответ

1 голос
/ 25 марта 2011

AFAIK, лесной пожар использует реализацию GL программного обеспечения PixelFlinger.Я точно знаю, что PixelFlinger 1.2 не реализует glGetFloat, но у меня нет информации, исправили ли это более поздние версии.Есть ли какая-либо информация о регистрации, когда вы звоните?По крайней мере, в версии 1.2 есть неконкретное предупреждение о «невыполненной функции».

Что касается решения - вам просто нужно создать матрицы в вашем собственном коде и затем загрузить их в GL.

...