Я работаю над небольшим 2d игровым движком для android-ndk, используя opengl. У меня возникли трудности с тем, как изменить уровни, например. от меню до игрового экрана. Поскольку идентификаторы текстуры не работают при загрузке новых текстур для игрового экрана с использованием glGenTextures, glGenTextures сохраняет возвращаемые дубликаты идентификаторов.Загрузка нового уровня OpenGL
// class to bind ndk with java
Renderer.java
void onSurfaceChanged(gl, width, height){
nativeSurfaceChanged();
}
void onDrawFrame(){
nativeDrawFrame();
}
// c++ code
Game.cpp
Screen *screen;
void SetScreen(Screen *scrn){
screen = scrn;
// load textures and create openGL objects (mesh and textures)
screen->Initialize();
}
void Update(){
screen->Update();
screen->Render();
}
NDKActivity.cpp
Game *game;
void nativeSurfaceChanged(){
// initlizes stuff like audio engine, rendering engine
game->Initialize();
// set current screen to main menu
game->SetScreen(new MainMenu());
}
void nativeDrawFrame(){
game->Update();
}
MainMenu.cpp
void Update(){
// if some button is clicked
game->SetScreen(new GameScreen());
}
Теперь, когда меню инициализировано, все работает нормально. Но при загрузке GameScreen текстовые идентификаторы все перемешались
Я в основном портировал его из приложения Windows, где я использовал GLUT для создания контекста OpenGL, и там он работал нормально.
И, пожалуйста, дайте мне знать, если больше информации необходимо
Это немного сложно ответить без небольшого фрагмента кода! Просто попробуйте дать нам минималистский пример того, как вы пытаетесь изменить свои уровни и как вы относитесь к своим текстурам. –
@MartinHennig это достаточно описание ?? – amuTBKT