這是個基於OpenGL和Timer 控件的Delphi編程實例,在OpenGL.pas 文件中,定義了所有的OpenGL 函數。本例動畫的實現主要是利用OpenGL 的顏色配置來獲得OpenGL 的場景,具體請看下面的代碼:
01
unit
Unit1;
02
interface
03
uses
04
Windows, Forms, OpenGL, Classes, ExtCtrls, Messages;
05
type
06
TMainForm =
class
(TForm)
07
Timer1: TTimer;
08
procedure
FormCreate(Sender: TObject);
09
FormDestroy(Sender: TObject);
10
FormPaint(Sender: TObject);
11
FormReSize(Sender: TObject);
12
Timer1Timer(Sender: TObject);
13
private
14
RC: HGLRC;
15
Angle :
Integer
;
16
Procedure
WMEraseBkgnd(
var
Message: TWMEraseBkgnd); message WM_
17
ERASEBKGND;
18
end
19
20
MainForm: TMainForm;
21
implementation
22
Dialogs;
23
{$R *.DFM}
24
TMainForm
.
25
begin
//初始化設置OpenGL 場景
26
RC:=CreateRenderingConText(Canvas
Handle,[opDoubleBuffered],
32
,
0
);
27
28
29
//釋放OpenGL 場景
30
DestroyRenderingConText(RC);
31
33
34
ActivateRenderingConText(Canvas
Handle,RC);
//制作場景需要的畫布
35
glClearColor(
0.5
1
//背景
36
glClear(GL_COLOR_BUFFER_BIT
or
GL_DEPTH_BUFFER_BIT);
//清除背景和占用的內存
37
glMatrixMode(GL_MODELVIEW);
//設置轉換矩陣
38
glLoadIdentity;
//轉換成初始狀態
39
gluLookAt(
6
,-
//設置場景所在坐標
40
glRotatef(
4
*Angle,
//繞軸(x:0;y:1;z:0)旋轉
41
//旋轉以獲得另一種場景
42
glScalef(
,sin(Angle*pi/
90
),
//場景模仿
43
glEnable(GL_DEPTH_TEST);
//著色
44
glBegin(GL_TRIANGLE_FAN);
//繪制一個四面體
45
glColor3f(
//上面頂點的顏色
46
glVertex3f(
//上面頂點的場景
47
//左邊頂點的顏色
48
glVertex3f(-
//左邊頂點的場景
49
//右邊頂點的顏色
50
//右邊頂點的場景
51
//後部中間頂點的顏色
52
//後部中間頂點的場景
53
//變化左邊頂點的顏色
54
//變化左邊頂點的場景
55
glEnd;
//停止變化
56
SwapBuffers(Canvas
Handle);
//復制場景
57
DeactivateRenderingConText;
//釋放場景
58
59
60
//設置窗口隨窗口尺寸變化的位置
61
wglMakeCurrent(Canvas
handle,RC);
//制作畫布場景
62
glVIEwport(
,Width,Height);
//指定視點
63
glMatrixMode(GL_PROJECTION);
//設置矩陣
64
//設置初始狀態
65
gluPerspective(
,Width/Height,
100
//設置透視參數
66
wglMakeCurrent(
67
Refresh;
//更新畫布
68
69
70
71
Inc(Angle,
72
if
Angle >=
360
then
Angle:=
//當角度不小於360 度時,角度賦值為0
73
Repaint;
74
75
Message: TWMEraseBkgnd);
//渲染背景
76
77
Message
Result:=
78
79
4) DLL窗口控制正如3)中的代碼說明的那樣,DLL窗口
本例效果圖: 代碼文件:unit Unit1;inter
本例效果圖:代碼文件:unit Unit1;i
本例效果圖: 代碼文件:unit Unit1; in
使用ClIEntSocket控件實現CSDN論壇帖子的自動