## 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)
- 第一章:FLTK编程模型
- 1.1FLTK功能简介
- 1.2搭建FLTK开发环境
- 1.3FLTK构件简介
- 1.4FLTK事件处理
- 1.5FLTK消息处理
- 1.6OpenGL编程
- 第二章:常用的控件和属性
- 2.1按钮
- 2.2文本
- 2.3颜色
- 2.4Box类型
- 第三章:FLTK的画图函数
- 3.1何时可以画图
- 3.2 FLTK的画图函数
- 3.3剪切
- 3.4颜色
- 3.5设置线条的属性
- 3.6画一般的图形函数
- 3.7画封闭的线,一次连接个顶点
- 3.8画三边形或四边形,并填充内部
- 3.9复杂图形函数
- 3.10字体
- 3.11覆盖画图函数
- 第四章:在FLTK中自定义控件
- 4.1定制图形控件说明
- 4.2如何开发一个控件的子类
- 4.3处理事件
- 4.4画控件