semar Temat założony przez niniejszego użytkownika |
OpenGL TextOut migotający tekst » 2012-09-04 18:28:18 Witam, tworzę coś w rodzaju gry, czyli obiekty 3d w OpenGL a na to nałożony tak zwany interfejs 2d, wykorzystałem do tego celu glOrtho, ładnie dzięki temu program rysuje mi prostokąty pod interfejs, ale schody się zaczynają gdy w tym 2d chce wyświetlić tekst. Fragment kodu:
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix(); glOrtho( 0, 800, 600, 0, - 1, 1 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity();
glPopMatrix();
glPushMatrix(); gluLookAt( wx, wy, wz, wx, wy - 0.5f, wz - 1.0f, 0.0f, 1.0f, 0.0f );
glPopMatrix(); SwapBuffers( hDC );
no i problem jest taki, że gdzie nie umieściłbym TextOut(hDC,0,0,"1234567890",10); to tekst pojawia się w pożądanym miejscu ale na ułamek sekundy i tak migocze sobie. Jakiś pomysł co mogę robić źle ? |
|
kubawal |
» 2012-09-04 18:31:31 A zrobiłeś podwójne buforowanie? |
|
semar Temat założony przez niniejszego użytkownika |
» 2012-09-04 18:34:50 Muszę przyznać że nie mam pojęcia nawet co to jest, do tej pory szło gładko więc nie szukałem informacji o takich bajerach, mógłbyś mi wyjaśnić na czym to polega i co zmieniłoby to ? |
|
kubawal |
» 2012-09-04 18:36:46 Kolory i cieniowanie Podwójne buforowanie eliminuje migotanie obrazu występujące przy stosowaniu pojedynczego bufora koloru. |
/edit: Kod daj w [cpp]...[/cpp] |
|
m4tx |
» 2012-09-04 18:42:30 A zrobiłeś podwójne buforowanie? |
Masz przecież w kodzie: no i problem jest taki, że gdzie nie umieściłbym |
A gdzie już umieszczałeś? :P Generalnie powinieneś umieścić to pomiędzy glClear(), a SwapBuffers(), ale nie pomiędzy glPushMatrix(), a glPopMatrix() i powinno działać :) |
|
semar Temat założony przez niniejszego użytkownika |
» 2012-09-04 18:46:08 No tak myślałem że to ten bajer jednak, posiłkuję się 1 książką jeśli chodzi o OpenGL i to mój błąd bo mało tam wyjaśnione. A co do tego gdzie próbowałem umieścić to np na końcu w ten sposób: glPopMatrix(); TextOut( hDC, 0, 0, "1234567890", 10 ); SwapBuffers( hDC ); lub przed pierwszym glPushMatrix(); zawsze efekt był ten sam, a co do migotania to dotyczy to tylko tekstu, reszta jest ładnie wyświetlana, poruszanie się po scenie płynne. |
|
xevuel |
» 2012-09-04 18:49:29 Z tego co mi wiadomo TextOut kompletnie nie nadaje się do użycia w grze, właśnie przez takie migotanie (któremu według moich doświadczeń nie idzie zaradzić). Jednym z rozwiązań jest zapewne utworzenie własnej czcionki z bitmapy :) |
|
semar Temat założony przez niniejszego użytkownika |
» 2012-09-04 18:50:52 Czy to jest konieczne? Nie mam za bardzo czasu i ochoty bawić się w własne czcionki, wolałbym wykorzystać coś gotowego w tym momencie. |
|
« 1 » 2 |