我使用 OpenGL 一段时间,现在我想将它与 FLTK 结合使用。我继承了 Fl_Gl_Window
并实现了 draw 方法:
void MainWindow::draw()
{
if(!valid())
{
// Setup
glEnable(GL_DEPTH_TEST);
glViewport(0,0,w(),h()); // At runtime W()=800, h()=600
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,w(),0,h(),1,1000);
}
gl_color(FL_BLUE);
gl_rect(0,0,w(),h());
}
我读过这种方式,甚至不需要在绘制前清除颜色,也不需要交换缓冲区(这是一个双缓冲窗口)。事实上,我看到窗口默认为黑色,无需调用 glClear
和 glColor
。然而,矩形没有被绘制,我得到一个全黑的窗口。
这是我实例化窗口的方式:
int main(int argc, char **argv)
{
MainWindow* w= new MainWindow(50,100,width,height,"Test Window");
w->end();
w->show(argc,argv);
return Fl::run();
}
最佳答案
绘制对象未显示在屏幕上的可能原因:
- 对象未
attach()
到窗口对象。 - 对象在窗口外的坐标。
关于c++ - FLTK + OpenGL - 未绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27138870/