MyGUI render behind my game's content

yangorcvs

01-04-2011 13:59:46

i use SDL+OpenGL+MyGUI under VS2008

here's my SDL init code:

SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 8);
SDL_Surface* drawContext;
Uint32 flags;
flags = SDL_OPENGL;//|SDL_FULLSCREEN;
drawContext = SDL_SetVideoMode(screenwidth, screenheight, 0, flags);
glFrontFace( GL_CCW );
glCullFace( GL_BACK );
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glShadeModel(GL_FLAT);
glEnable(GL_TEXTURE_2D);
glAlphaFunc(GL_GREATER, 0);
glEnable(GL_ALPHA_TEST);
glViewport( 0, 0, screenwidth, screenheight );
glOrtho(0, screenwidth, screenheight,0, -20, 20);

in main game loop , i call my game's render first, and then call
mPlatform->getRenderManagerPtr()->drawOneFrame();

when i run the game, i see mygui render everything behind my game's own objects.

i tried to glDisable(GL_DEPTH_TEST) before i call mPlatform->getRenderManagerPtr()->drawOneFrame();, but no use


any idea? best wishes to you...

Altren

01-04-2011 15:30:59

GL_DEPTH_TEST is disabled already. I'm not familar with OpenGL, but you should look into void OpenGLRenderManager::begin() and change something there.

yangorcvs

02-04-2011 02:47:21

what a fool am I....i called SDL_GL_SwapBuffers() in my game's render function... so Mygui is rendered before my game ...

thank you for your answer, it insprire me to found my mistake.