В OpenGL, чтобы сохранить кадры рендеринга программы Мне нужен цикл while
, весь код, который помещается внутри цикла, выполняется каждый цикл. Цикл выглядит следующим образом:Как работает итерация рендеринга в Android Native App с использованием NDK, JNI в OpenGL ES?
while(!glfwWindowShouldClose(window))
{
// Check and call events
glfwPollEvents();
// Rendering commands here
...
// Swap the buffers
glfwSwapBuffers(window);
}
Теперь я прыгать в OpenGL ES и пытаюсь извлечь из этого примера:
https://github.com/googlesamples/android-ndk/tree/master/gles3jni
Однако, я не мог найти while
или for
цикла в коде. Вместо этого есть что-то еще, что нравится расширять GLSurfaceView
и внедрять GLSurfaceView.Renderer
. Я действительно не понимаю, как это работает.
Поэтому интересно, как итерация идет каждый раз, когда она создает рамку? Все, что написано в файле .cpp, выполняется каждый цикл или просто функции, вызываемые JNI? И как только он заканчивает рендеринг самого первого кадра, где он начинается в начале второго цикла? Ваше внимание и помощь очень ценятся.
Так что, если у меня есть переменная '' x'', которую нужно было изменить каждый кадр, я мог бы поместить его только в метод ('' step() '' метод в приведенном выше примере), который вызывается через JNI от '' onDrawFrame'', это правильно? –
Да, вы поняли. Если эта переменная является cpp, то вы обновляете ее в «шаге», если она есть Java, вы обновляете ее в 'onDrawFrame' – yakobom
Большое спасибо, вы много дней сохраняете мой день :) –