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+. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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ć :) |
|
DejaVu |
» 2013-07-11 17:29:39 @m4tx: No, ale tam dużo wolniej idzie dyskusja :P |
|
Badman |
» 2013-07-12 08:37:56 Nie znam się na tym, ale w przykładzie jest:
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...
|
|
1 2 « 3 » 4 |