glClear i olbrzymi memory leak
Ostatnio zmodyfikowano 2014-07-04 16:58
Wrzud Temat założony przez niniejszego użytkownika |
glClear i olbrzymi memory leak » 2014-07-04 16:23:21 Witam! Po podpięciu pod okno SDL2 OpenGL zauważyłem, że skompilowana aplikacja zżera ok. 20MB/s RAM. Valgrind nie wskazał źródła problemu zasypując mnie błędami sterownika fglrx(to chyba normalne). Kolejno usuwając wywołania funkcji doszedłem, że glClear jest winowajcą, bez względu na argumenty. #include <SDL2/SDL.h> #include <GL/glew.h> #include <GL/glu.h>
class GL3Engine { private: SDL_Window * window; public: bool initialize() { SDL_Init( SDL_INIT_VIDEO ); window = SDL_CreateWindow( "Debug", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 444, 444, SDL_WINDOW_OPENGL ); return true; } void initContext() { glewExperimental = GL_TRUE; glewInit(); SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 ); SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 2 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 24 ); glEnable( GL_DEPTH_TEST ); glDepthFunc( GL_LESS ); glEnable( GL_BLEND ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); glClearColor( 0, 0, 0, 1 ); } void run() { SDL_GLContext gl = SDL_GL_CreateContext( window ); SDL_Event event; initContext(); while( true ) { while( SDL_PollEvent( & event ) ) switch( event.type ) { case SDL_KEYDOWN: switch( event.key.keysym.sym ) { case SDLK_LEFT: break; case SDLK_RIGHT: break; case SDLK_UP: break; case SDLK_DOWN: break; } break; case SDL_QUIT: return; break; } glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); SDL_GL_SwapWindow( window ); } SDL_GL_DeleteContext( gl ); } ~GL3Engine() { SDL_DestroyWindow( window ); SDL_Quit(); } }; int main() { GL3Engine e; e.initialize(); e.run(); }
Dodam, że moje GPU, a w zasadzie APU, to AMD A8 5500. Liczę na pomoc w załataniu wycieku ;) |
|
pekfos |
» 2014-07-04 16:24:31 adding a glClear(0); after SwapBuffers(m_hDC); in endFrame() function results in a no memory leak |
|
|
Wrzud Temat założony przez niniejszego użytkownika |
» 2014-07-04 16:39:08 Gdybym znalazł to bym nie pytał :) /edit Nie działa. |
|
pekfos |
» 2014-07-04 16:48:01 |
|
Wrzud Temat założony przez niniejszego użytkownika |
» 2014-07-04 16:58:48 Sprawdzałem, niestety to nie działa. Spróbuje zainstalować starszą wersję fglrx ;)
/edit: To błąd w sterowniku, po instalacji fglrx z repo ubuntu problem nie występuje :P |
|
« 1 » |