Posts Tagged SDL
SDL + OpenGL oraz SDL_GL_SwapBuffers()
Posted by moriturius in Programowanie on Wrzesień 16, 2008
Ostatnio, pisząc AGE, natknąłem się na pewien mały problem wydajnościowy związany z funkcją SDL_GL_SwapBuffers(). Okazało się bowiem, że gdy rysowałem w okienku wszystko było w miarę, ale po przełączeniu do pełnego ekranu kolory były jakieś nienormalne i wydajność spadła do ~70FPS. Przy pustym ekranie…
Po szybkim zastosowaniu metody włączeń i wyłączeń (lub jeśli ktoś woli: zkomenć, odkomenć
) odnalazłem winowajcę – nieszczęsną funkcję podmieniającą bufory. Rozpocząłem więc poszukiwania w internecie i oczywiście wiele było takich problemów, ale wszyscy genialnie radzili wyłączyć synchronizację…
Rozpocząłem się testować z różnymi wartościami przy opcjach ustawień obrazu i po jakiejś chwili odkryłem, ze wina była oczywiście moja. Problematyczne okazały się dwie instrukcje:
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 24); SDL_SetVideoMode(width, height, 16, SDL_OPENGL | SDL_GL_ACCELERATED_VISUAL | (full?SDL_FULLSCREEN:0);
Cudownym lekiem okazała się być zmiana z głębi 16 na 24 bity w SDL_SetVideoMode(). FPS od razu wskoczyło na kilka tysięcy, a po narysowaniu kilku obrazków spadło do ~660. Jest więc tak jak być powinno.
Mała rzecz, a tyle może przysporzyć kłopotów…
Przyczyny problemów z STL
Posted by moriturius in Programowanie on Grudzień 8, 2007
Na kanale #warsztat krajek męczył mnie abym spróbował jeszcze raz z tym STL-em i dał kilka rad. Jedną z rad było używanie Interfejsów i wyeksportowanie z DLL-a tylko jednej funkcji tworzącej interfejs główny. Zrobiłem tak.
Ale to nie to
Pobadałem trochę przyczyny takiego stanu rzeczy i okazało się, że błędy wyskakują kiedy jakaś funkcja jako parametr pobiera np.: std::string. Po zamianie typu parametru na char* i późniejszym (w środku funkcji) stworzeniu std::string wszelkie problemy znikły.
std::map też nie ma problemów z działaniem. Teraz pozostało mi już tylko dokończyć tworzenie interfejsów – trochę roboty przy tym będzie, ale przynajmniej nikt mi później nie powie, że jest nie-obiektowo
No to tyle. STL wróciło do AGE więc mogę już spać spokojnie