## 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>`頭文件,不要使用后者的頭文件。
例子程序比較長,附在參考中。運行顯示,彈出菜單后如圖所示:

- 第一章: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畫控件