私はいくつかの簡単な fltk コードを持っています:
#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();
}
この例は、mingw を使用して Windows 7 で完全にコンパイルおよびリンクされますが、実行するとかなり見苦しくなります。最初に画面が暗くなり、白く点滅します。次に、画面が再描画され、ウィンドウが表示されます。アプリケーションをシャットダウンしても同じことが起こります。
描画コードを削除しようとしましたが、同じことが起こり、外側のウィンドウから gl ウィンドウを削除しましたが、それでも発生します。したがって、実際の描画には影響しません。だから私の疑いは、opengl コンテキストの作成がこれを引き起こしているということです。ウィンドウが「静かに」表示されるようになったため、gl ウィンドウの作成を削除すると、この仮説が支持されます。
Fl_Gl_Window を Windows でうまく再生する方法を知っている人はいますか?