我正在使用opengl爲android-ndk創建一個小型2d遊戲引擎。 我面臨着如何改變關卡的難度,例如。從菜單到遊戲屏幕。 由於使用glGenTextures加載遊戲畫面的新紋理時紋理ids無法正常工作,因此glGenTextures會一直返回重複的ids。加載新的級別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的textue ID得到所有混合起來
我基本上從windows應用程序中移植它,我使用GLUT創建OpenGL上下文,並且它工作正常。
並請讓我知道,如果需要更多的信息
這就是有點難以回答沒有一小段代碼!試着給我們一個簡單的例子,說明你如何改變你的關卡以及如何處理你的紋理。 –
@MartinHennig是否足夠描述? – amuTBKT