2013-03-22 6 views
0

У меня есть простой код FLTK:Fl_Gl_Window вспышки по созданию

#include <FL/Fl.H> 
#include <FL/Fl_Gl_Window.H> 
#include <FL/gl.h> 

class MyWin : public Fl_Gl_Window { 
    public: 
    MyWin(int x,int y, int w,int h, const char*l = 0) : 
    Fl_Gl_Window(x,y,w,h,l) 
    { 
    } 
    void draw(); 
    void resize(int X,int Y,int W,int H) { 
    Fl_Gl_Window::resize(X,Y,W,H); 
    glLoadIdentity(); 
    glViewport(0,0,W,H); 
    glOrtho(-W,W,-H,H,-1,1); 
    redraw(); 
    } 
}; 

void MyWin::draw() { 
    ortho(); 
    glBegin(GL_QUADS); 
    glColor3d(1,0,0); 
    glVertex3f(10,10,0); 
    glColor3d(0,1,0); 
    glVertex3f(w()-10,10,0); 
    glColor3d(0,0,1); 
    glVertex3f(w()-10,h()-10,0); 
    glColor3d(1,1,0); 
    glVertex3f(10,h()-10,0); 
    glEnd(); 
} 

int main(int argc,char* argv[]) { 
    Fl_Window win(500,500, "OpenGL"); 
    MyWin window(10,10,win.w()-20,win.h()-20); 
    win.end(); 
    win.resizable(window); 
    win.show(argc,argv); 
    return Fl::run(); 
} 

Этот пример компилируется и отлично для меня на Windows 7 с помощью MinGW, но когда я запускаю его, он получает довольно некрасиво. Сначала экран становится темным и мигает белым. Затем экран перерисовывается и появляется мое окно. То же самое происходит, когда я закрываю приложение.

Я попытался удалить код чертежа, то же самое произойдет, затем я удалил окно gl из внешнего окна, и это все еще происходит. Это не влияет на фактический чертеж. Поэтому я подозреваю, что создание контекста opengl вызывает это. Удаление создания окна gl подтверждает эту гипотезу, поскольку окно теперь появляется «тихо».

Кто-нибудь знает, как я могу заставить Fl_Gl_Window хорошо играть в окнах?

ответ

0

В функции Жеребьевка(), я использую

if (!valid()) 
    { 
     valid(1); 
     glLoadIdentity(); 
     glViewport(0,0,w(),h()); 
     ortho(); 
    } 

прежде всего. Я думаю, что это функция OpenGL. Если вы разместите здесь инструкцию printf, вы увидите, что она вызывается при первом розыгрыше и изменении размера.

Возможно, это как-то связано с этим вопросом: Valid OpenGL context?

Смежные вопросы