Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[GTK+, SFML] Rozmazane sprajty

Ostatnio zmodyfikowano 2013-07-12 12:54
Autor Wiadomość
m4tx
» 2013-07-11 13:43:32
Ale ten kod jest bardzo krótki i bardzo prosty. Nie trzeba żadnego gtkmm - wystarczy chwilka czasu by go przepisać na czyste GTK+.
P-87530
MrPoxipol
Temat założony przez niniejszego użytkownika
» 2013-07-11 13:50:06
A myślisz, że jak normalnie robiłem? Poza tym ten kod nie robi nic innego tylko wyświetla białe tło. Swój opierałem o właśnie taki kod.
P-87531
DejaVu
» 2013-07-11 14:04:40
Nie musisz walczyć z kontekstem OpenGL - jedyne co należy zrobić to po prostu nadać prawidłowy rozmiar okna zanim stworzysz bufor za pomocą API SFML-a.

Hm, a więc jak mam zmienić rozmiar tego kontekstu? Szukam, trudno coś znaleźć, a ekspertem OGL'a nie jestem ;)
Problemem nie jest znajomość OpenGL-a tylko znajomość WinAPI. To rozmiar okna WinAPI ma rozmiar 1x1 w chwili wywołania metody tworzącej kontekst OpenGL.
P-87533
MrPoxipol
Temat założony przez niniejszego użytkownika
» 2013-07-11 15:36:17
Hm, a dokładniej? ;p Bo nie czaje za bardzo :/ Ustawianie rozmiaru okna SFML nic nie daje. Tak samo ustawianie rozmiaru drawingarea.
P-87539
DejaVu
» 2013-07-11 16:41:45
Chodzi o to, że najpierw musisz zagwarantować, że standardowa funkcja WinAPI do pobierania rozmiaru okna zwróci wartość inną niż 1x1 zanim wywołasz funkcję tworzącą kontekst OpenGL. Biblioteka SFML o ile się nie mylę pobiera rozmiar okna z otrzymanego HWND.
P-87563
m4tx
» 2013-07-11 16:53:23
Dodam tylko, że pytanie zostało także zadane na stackoverflow.

@down: bez wątpienia, ale link zawsze warto dodać :)
P-87567
DejaVu
» 2013-07-11 17:29:39
@m4tx: No, ale tam dużo wolniej idzie dyskusja :P
P-87571
Badman
» 2013-07-12 08:37:56
Nie znam się na tym, ale w przykładzie jest:
C/C++
GtkWidget * carea;
carea = gtk_drawing_area_new();
area = Glib::wrap( carea );

add( * area );

GdkEventMask mask;
mask = GDK_ALL_EVENTS_MASK;

gtk_widget_add_events( area->gobj(), mask );
gtk_widget_set_can_focus( area->gobj(), true );
gtk_widget_set_size_request( area->gobj(), 640, 480 );
gtk_widget_realize( area->gobj() );
gtk_widget_set_double_buffered( area->gobj(), false );
#ifdef WINDOWS
prog.create( GDK_WINDOW_HWND( area->gobj()->window ) );
#else
prog.create( GDK_WINDOW_XID( area->gobj()->window ) );
#endif

g_signal_connect( area->gobj(), "expose-event", G_CALLBACK( on_exposed ), NULL );

@MrPoxipol: zauważ, że rozmiar, prog.create, powiązanie sygnału expose-event odnosi się do area, a nie do carea. Nie wiem co robi area = Glib::wrap(carea) oraz add(*area), domyślam że tworzy kopie carea...


P-87622
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona