У меня есть простой код 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 хорошо играть в окнах?