多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 1.6OpenGL编程 在FLTK中很容易使用OpenGL进行图形编程的,我们只需要使用它的Fl_Gl_Window构件,重新定义一个派生于Fl_Gl_Window的类,重载draw()和handle()就可以。所需要的代码和步骤如下: 1. 包含以下头文件 ``` #include <FL/Fl.H> #include <FL/gl.h> #include <FL/Fl_Gl_Window.H> ``` 2. 定义一个子类,如下代码所示 ``` class MYGLWindow : public Fl_Gl_Window { void draw(); //作图操作 void handle( int ); //消息事件处理 public : MYGLWindow(int x,int y,int w,int h,const char *L) : Fl_Gl_Window(x,y,w,h,L){}; }; ``` 3. 实现draw()事件 ``` void MYGLWindow::draw() //作图 { if(!valid()) { //设置viewport窗口大小等等 例如 /********************************************** valid(1); glLoadIdentity(); glViewport(0,0,w(),h()); ***********************************************/ } //添加使用OPENGL作图操作 }; ``` 4. 事件处理实现 ``` void MYGLWindow::handle( int event) //事件处理 { switch (event) { case FL_PUSH : //操作等 return 1; case …… } } ``` 注意 1. 编译时需要包含openGL32的库文件,名字在不同的平台名字稍微不同。 2. 使用`<FL/gl.h>`代替`<GL/gl.h>`头文件,不要使用后者的头文件。 例子程序比较长,附在参考中。运行显示,弹出菜单后如图所示: ![](https://box.kancloud.cn/2016-01-09_5690737f4cd63.png)