ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL Π² Delphi
ΠΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΎΠ±Π·ΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ OpenGL Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Ricardo Sarmiento. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ - ΡΠΎΡΠ½Π΅Π΅ Ρ Π½Π°ΡΠ΅Π» ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠ°ΡΡΡ. CΡΠ°ΡΡΡ ΡΠΊΠΎΡΠ΅Π΅ ΠΎΠ±Π·ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ OpenGL , ΡΠ΅ΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π₯ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² DXF.
Π₯ΠΎΡΡ ΡΠ°Π·ΡΡΡΠ½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠΎ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² OpenGL.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Delphi 3 Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Source ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΉΠ» OpenGL.pas - ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL. ΠΠ½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² Gl.h ΠΈ Glu.h, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠ·ΡΠΊΠ° C.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ - Glut. Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅ Glut.h ΠΈ Π΅Π΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π½Π° Delphi Glut.pas. ΠΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² OpenGL ΠΈ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² OpenGL ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΠΈΡΡΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ. ΠΠ°ΠΊ ΠΈ ΡΠ°, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠ·ΡΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenGL. ΠΠΎ ΠΏΠ΅ΡΠ²ΡΡ
Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅
Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΡΡ Π±ΡΡΡΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. ΠΠΎ Π² ΡΡΠ°ΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
ΠΎΠ±Π·ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ OpenGL, ΠΏΠΎΡΠ΅ΠΌΡ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½ΠΎΠ²ΠΈΡΠΊΡ ΠΏΠΎΡΠΎΠΉ
ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π΄Π΅Π±ΡΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·ΡΠ΅Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ»ΠΊΠ½ΡΡΡ Π²Π°Ρ Π½Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
OpenGL.
ΠΡΠ°ΠΊ Π½Π°ΡΠ½Π΅ΠΌ. ΠΡΠΈΠ²Π΅Π΄Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅:
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅Ρ 1
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ TSceneGL
Scene:TSceneGL; ... Scene:=TSceneGL.create; // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π½Ρ....
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° TEntity - ΠΊΡΠ±, Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TFace, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²Π΅ΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅Π½Ρ.
Cube:Tentity; Face:TFace; .... Cube:=TEntity.create; // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ TEntity Cube.SetColor(90,200,150); // ΠΠ½ΠΈΡΠΈΠΈΡΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ° R,G,B Face:=cube.addFace; // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ 1-ΠΉ face Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΡΠ±Π΅ Π²ΡΠ΅Π³ΠΎ 6 Π³ΡΠ°Π½Π΅ΠΉ (Π² ΠΊΡΠ±Π΅) Face.AddVertex(1.0, 1.0, 1.0,0.0, 0.0, 1.0); // Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 1-ΠΉ vertex Face.AddVertex(-1.0, 1.0, 1.0,0.0, 0.0, 1.0); // Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 2-ΠΉ vertex Face.AddVertex(-1.0, -1.0, 1.0,0.0, 0.0, 1.0);// Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 3-ΠΉ vertex Face.AddVertex(1.0, -1.0, 1.0,0.0, 0.0, 1.0);// Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 4-ΠΉ vertex .... Scene.Entities.add(cube);// Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΡΠ± Π½Π° ΡΡΠ΅Π½Ρ
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ° Tlight ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅Π½Ρ.
Light:=Tlight.create(1); // ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π½Π° ΡΡΠ΅Π½Ρ Scene.lights.add(light);
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅Π½Ρ
// ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Handle Panel1 Π½Π°ΡΠ΅ΠΉ ΡΡΠ΅Π½Π΅, Π½Π° Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Scene.InitRC(panel1.handle); Scene.UpdateArea(panel1.width,panel1.height);
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Procedure TForm1.Timer1Timer(Sender: TObject); begin // ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ rx, ry,rz .... Tentity(Scene.Entities.Items).Rotate(rx,ry,rz); // ΠΏΠΎΠ²Π΅ΡΠ½Π΅ΠΌ ΠΊΡΠ± Scene.Redraw; // ... ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΡΠ΅Π½Ρ end;
ΠΡΠΈΠΌΠ΅Ρ 2
ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°: ΠΡΠ΅ΠΊΡΠ° TEntity - Π΄Π΅Π»ΡΡΠΈΠ½ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π΅ ΡΠ΅ΡΠ΅Π· TFace, Π° Π³ΡΡΠ·ΠΈΡΡΡ ΠΈΠ· DXF ΡΠ°ΠΉΠ»Π° - ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΆΠΈΠ·Π½Ρ.
Dolphin:=TEntity.create; Dolphin.SetColor(100,100,160); Dolphin.LoadDXF("..Dolphin.dxf",true); with dolphin do begin move(0,0,-15); // ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ rotate(-30,-30,-30); // ΠΈ ΠΏΠΎΠ²Π΅ΡΠ½Π΅ΠΌ end; Scene.entities.add(dolphin); // Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π΅Π»ΡΡΠΈΠ½Π° Π½Π° ΡΡΠ΅Π½Ρ...
ΠΡΠΈΠΌΠ΅Ρ 3
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ: Π£ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Dolphin ΠΈΡΡΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΠΈ ΠΊ TFace, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΡΠ΅ΠΊΡ ΠΎΠ±ΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°:
Dolphin.CalcNormals; // Π²ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π½ΠΎΡΠΌΠ°Π»ΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° Dolphin.Center; ....
ΠΡΠΈΠΌΠ΅Ρ 4
Procedure TForm1.FormCreate(Sender: TObject); .... Mouse:=T3DMouse.create(dolphin); // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ T3DMouse Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Mouse.scale(1,1,0.1,1,1,1); // Π·Π°Π΄Π°Π΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°....
ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ:
Procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Mouse.move(x,y,shift); // ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ - Π΄Π΅Π»ΡΡΠΈΠ½ Π² Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ Scene.Redraw; // ΠΏΠ΅ΡΠ΅ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ΅Π½Ρ end;
ΠΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅:
Mouse.Block(4,TspeedButton(sender).down); // Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° rx ...
ΠΡΠΈΠΌΠ΅Ρ 5
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
Case dolphin.wireframe of 0:begin speedbutton5.caption:="ΠΠΈΠ½ΠΈΠΈ"; dolphin.wireframe:=1; end; 1:begin speedbutton5.caption:="ΠΠ°Π»ΠΈΠ²ΠΊΠ°"; dolphin.wireframe:=2; end; 2:begin speedbutton5.caption:="Π’ΠΎΡΠΊΠΈ"; dolphin.wireframe:=0; end; end; Scene.Redraw; // ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΡΠ΅Π½Ρ...
ΠΡΠΈΠΌΠ΅Ρ 6
Π‘ΠΎΠ±Π΅ΡΠ΅ΠΌ Π²ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ FPS ΠΏΡΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅.
ΠΡ Π²ΠΎΡ, ΡΠ°ΠΌΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ°ΡΡ ΠΠ°ΠΌ ΠΏΠΎΠ½ΡΡΠ½Π°. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Opengl32.dll ΠΈ Glu32.dll. ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ Demo1-XXX.
Π’Π΅ΠΊΡΡΡΡΡ
ΠΡΠ° Π³Π»Π°Π²Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΠ΅ΠΊΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² OpenGL. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π΄Π°Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ. ΠΠΎ ΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠΌΠ΅Ρ 1 ΠΏΠΎΡΠΎΠΌ 2, Π° Π½Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° 5. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΡΡ, ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ GL_linear Π½ΡΠΆΠ΅Π½ 3D ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Ρ, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΠ§ΠΠΠ¬ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ 1
ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ
Point:TVertex; .... begin // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»Ρ Panel1 mouse.FindVertex(x,panel1.height-y,Scene,point); for i:=1 to numFound do // ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΏΠΎ Mouse.FindVertex begin poly:=VertexHits[i] shr 16; vert:=VertexHits[i] mod 65536; If (poly "
ΠΡΠΈΠΌΠ΅Ρ 2
Π€ΠΎΡΠΌΠ°Ρ DXF ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Ρ.ΠΊ. ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π°Π²ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 3
ΠΠ°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ
Thing.CreateTexture; // Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΠΊΡΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ thing.texture.LoadTexture("texture.bmp"); thing.texture.automatic:=False; ... // Π° Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ ΡΡΡΠΈΠ½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ Π²Π΅ΡΡΠΈΠ½ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° with thing do begin vertex:=Tvertex(Tface(thing.faces.items).vertices.items);// x,y,z =0,0,0 vertex.tx:=1; vertex.tz:=0; ... end;
ΠΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Ρ Ρ with thing do ..... end (Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΡΡ) ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ thing.texture.automatic:=true.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΡΡ
Thing.Texture.MagFilter:=GL_linear;
Thing.Texture.MagFilter:=GL_nearest;
ΠΡΠΈΠΌΠ΅Ρ 4
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ΅ΠΊΡΡΡΡ (Π°Π»ΡΡΠ° ΠΊΠ°Π½Π°Π»ΠΎΠ²)
Thing.texture.EnvironmentMode:=GL_decal; // Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° transparent texturing thing.texture.envblendcolor:=scrollbar1.position; // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ 0 - 255
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΠ΅Π½Π° Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΏΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ FormCreate_partII.
ΠΡΠΈΠΌΠ΅Ρ 5
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅ΠΊΡΡΡΡΠ°:) ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡΡ - ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ ΡΠΈΡΡΠ°ΠΌΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ TBitmap ΠΈ ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ Canvas ΠΏΠΈΡΠ΅ΠΌ ΡΡΠΈ ΡΠΈΡΡΡ. ΠΠ°Π»Π΅Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΎΡ Π’Bitmap Π² ΡΠ°ΠΉΠ» "texture.bmp". Π£Π΄Π°Π»ΡΠ΅ΠΌ Ρ ΡΠΊΡΠ°Π½Π° ΠΊΠΎΠΌΠΏΠ° ΡΡΠ°ΡΡΡ ΡΠ΅ΠΊΡΡΡΡΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΈΠ· ΡΠ°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ "texture.bmp".
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ Demo2-XXX
ΠΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅Ρ 1
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. Π Π°Π½Π΅Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ° Π·Π°Π΄Π°Π²Π°Π»ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΈΠΏΠ° ΠΏΡΠΎΠΆΠ΅ΠΊΡΠΎΡ
(CLspot). Light:=Tlight.create(1); Light.LightType:=CLspot; Light.CutOffAngle:=5; Light.SpotExponent:=100;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ CutOffAngle - ΡΠ³ΠΎΠ» ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π»ΡΡΠ°.
SpotExponent - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π°ΡΡΡ Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
Light.SetOrientation(0,-1,0); Light.Source.SetPosition(0,5,-20);
ΠΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ ΡΡΠΎ ΠΊΠΎΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΡΠ²Π΅Ρ. ΠΡΠ»ΠΈ SpotExponent=0, ΡΠΎ ΠΏΡΡΠ΅ΠΊ ΡΠ²Π΅ΡΠ° ΡΡ ΠΎΠ΄ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ. ΠΠ΄Π΅ΠΌ Π΄Π°Π»Π΅Π΅:
ΠΠ°Π΄Π°Π΅ΠΌ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΆΠ΅ΠΊΡΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΏΠΎΠ»ΠΎΡ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ²Π΅ΡΠ° Π²
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Ambient:
SBlightRed.position:=round(Light.Fambient * 100);
SBlightGreen.position:=round(Light.Fambient * 100);
SBlightBlue.position:=round(Light.Fambient * 100);
ΠΡΠΈΠΌΠ΅Ρ 2
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.
ΠΡΠ΅, ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ Demo3-XXX
Π’ΡΠΌΠ°Π½
ΠΡΠΈΠΌΠ΅Ρ 1
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠΌΠ°Π½Π° Π² ΡΡΠ΅Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ:
Scene:TSceneGL; ... scene.fogEnabled:=True;
ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠΌΠ°Π½Π°:
Π’ΠΈΠΏ ΡΡΠΌΠ°Π½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
FogType:=Gl_Linear; fogType:=GL_exp; fogType:=GL_exp2;
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄ΠΈΡΡΠ°Π½ΡΠΈΡ:
- fogMaxDist
- fogMinDist
ΠΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ:
- fogDensity
Π¦Π²Π΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ RGB:
- scene.fogcolor; R
- scene.fogcolor; G
- scene.fogcolor; B
ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ Redraw. ΠΠ»Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΡΡΠΌΠ°Π½Π° ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠΌΠ°Π½Π°. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ /ΡΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ /.
ΠΡΠΈΠΌΠ΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Demo4-XXX.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΎ ΠΌΠ΅ΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ OpenGL Π² Delphi Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΡΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°. ΠΡΠΎΠ΅ΠΊΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠ°ΠΌΡΡ
ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΡΡΠΎ ΠΎΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ OpenGL ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈΠ· ΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ ΠΌΠΎΠΉ ΠΏΡΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΠΎΠ΄ΠΌΠΎΠ³ΠΎΠΉ Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΡΠΈΡ
Π²ΠΎΠΏΡΠΎΡΠ°Ρ
.
ΠΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠΈΠ½Π°Π» ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL Π² Delphi, ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΡΠΎΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° C ΠΈ C++, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Delphi. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΠ΅ΠΌ Π² Π²ΡΠ·Π΅, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π²ΠΊΠ»ΡΡΠΈΠ» Π² ΡΡΠ΅Π±Π½ΡΠ΅ ΠΊΡΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ² OpenGL, ΡΡΡΠ΄Π΅Π½ΡΡ Ρ ΠΌΠΎΠ΅ΠΉ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Π― ΡΠ΅ΡΠΈΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΎΠ·Π°Π³Π»Π°Π²ΠΈΠ» Π½Π°Π±ΠΎΡ "ΠΠΈΠΠΈΡΡΠ°Ρ Delphi" ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΠ°ΠΉΡΡ "ΠΠΎΡΠΎΠ»Π΅Π²ΡΡΠ²ΠΎ Delphi". ΠΠ° ΡΠ°ΠΉΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠ΅ΡΠΈΠ΅ΠΉ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL Π² Delphi. ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
Π‘ΡΠ°ΡΡΠΈ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΏΠΈΡΠ°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΡΠΎΠΊΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ - ΠΎΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ Windows Π΄ΠΎ ΡΠΌΡΠ΄ΡΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ². Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ Π² ΡΠ²ΠΎΠΈΡ
ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡΡ
, ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ
Π²ΠΎΠΏΡΠΎΡΠΎΠ². ΠΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΎΡΠ²Π΅ΡΠ°Π΅ΠΌΡΠ΅ Π·Π΄Π΅ΡΡ, ΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
"ΠΠΈΠΠΈΡΡΠΎΠΉ Delphi".
OpenGL - ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΈ ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ
CAD-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΈ ΠΈΠ³ΡΠ°Ρ
.
ΠΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ OSR2 Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡΡ
DLL-ΡΠ°ΠΉΠ»ΠΎΠ² - opengl32.dll ΠΈ glu32.dll. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΡΡΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ OpenGL, Π²ΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΡ
ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ opengl32.dll ΠΈ ΡΠ²Π»ΡΡΡΠ°ΡΡΡ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ.
Π’ΠΎ, ΡΡΠΎ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎ, ΡΡΠΎ OpenGL ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ.
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π±Π°Π·Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΡΠΌΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌΠΈ OpenGL ΡΠ²Π»ΡΡΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΡΡΡ - ΠΊΠΎΠ΄ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ OpenGL ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π½Π° ΡΠ°ΠΉΡ http://www.opengl.org
ΠΠΌΠ΅ΡΡΠ΅ Ρ Delphi, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΡΠ΅ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎ OpenGL ΡΠΈΡΠΌΡ MicroSoft ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» opengl.pas, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ
Π½Π° Delphi.
ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ OpenGL, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΠΠΠ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΡ OpenGL Π΄Π»Ρ Windows ΡΠΈΡΠΌΡ SGI, ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΠΌΠ΅ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠ½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΏΠΎΠ»Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ΅Ρ
Π²Π΅ΡΡΠΈΠΉ OpenGL - ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° MGL ΡΠΈΡΠΌΡ SciTechSoft.
ΠΡ Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
Π±ΡΠ΄Π΅ΠΌ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Delphi, ΡΠ°ΠΊ ΡΡΠΎ ΠΠ°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. Π£ΠΌΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenGL, ΠΡ Π»Π΅Π³ΠΊΠΎ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅ΡΠ½ΠΎΠ²ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ OpenGL. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ.
ΠΡΠ°ΠΊ, Delphi Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenGL Π² ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΠ»ΠΎΡ
ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠΌΠΎΡΠΈ, Π° Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL Delphi Π½Π΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ). ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ ΡΠ°ΡΡΠΎ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ OpenGL Π² Delphi. Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Delphi ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½ Π΄Π°Π½Π½ΡΠΉ ΠΊΡΡΡ ΡΡΠ°ΡΠ΅ΠΉ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠ° ΡΠ΅ΠΌΠ° ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½Π° ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ OpenGL ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΄ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΠ³Π°ΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±ΡΠΈΡΠ½ΠΎΡΡΡΡ.
ΠΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΌΡΡΠ»Π° ΡΡΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠΌΡΡΠ» ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΠΎΠ½ΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows - ΡΡΡΠ»ΠΊΠ°, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
Delphi Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΎ ΡΠΎΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π₯ΠΎΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenGL ΠΈ Π±Π΅Π· Π³Π»ΡΠ±ΠΎΠΊΠΈΡ
Π·Π½Π°Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠ²ΡΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡ
OpenGL.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎ, ΡΡΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΡ, Π½ΡΠΆΠ΄Π°ΡΡΡΡ ΠΎΡ Delphi ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΉΠΌΠ΅ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΈ ΠΌΡΡΡΡ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΎΠ³Π°ΡΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ VCL. ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ "ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ" ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΠ΅ΠΌΡ ΡΡΠΎΠ²Π½Π΅ΠΌ Π½ΠΈΠΆΠ΅ RAD-ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠΎ Π½Π°ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎ ΡΠΈΠ»Π°ΠΌ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±Π΅Π· Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ
ΡΡΠ΅Π΄ΡΡΠ² Π²ΠΎΠΎΠ±ΡΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Windows API, ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ
ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΡ
ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ (ΠΏΠΎΡΡΠ΄ΠΊΠ° Π΄Π²ΡΡ
Π΄Π΅ΡΡΡΠΊΠΎΠ² ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ).
ΠΡΠ°ΠΊ, Π½Π°Ρ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ², Π½Π°ΠΏΡΡΠΌΡΡ Π²ΡΠΎΠ΄Π΅ Π±Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ OpenGL.
ΠΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΄ΡΡΠ³ΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΏΠΎ ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ.
Π‘ΠΎΠ±ΡΡΠΈΠ΅. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ½ΡΠ΅ΠΊΡΡ.
ΠΠ°ΡΠ½Π΅ΠΌ Π½Π°Ρ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠΉ "ΡΠΎΠ±ΡΡΠΈΠ΅" ΠΈ "ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅".
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΡΡΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΎΠ±ΡΠ°ΡΡΠ΅ΠΉΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Delphi ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnCreate, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_CREATE, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_PAINT ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ OnPaint, ΠΈ Ρ.Π΄..Π’Π°ΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΡ, ΡΡ
ΠΎΠ΄Π½ΡΡ Ρ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ°Π΅Ρ ΠΎΠΊΠ½Π° Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Ρ Π½ΠΈΠΌΠΈ? ΠΡΠ΅ ΠΎΠΊΠ½Π° ΠΏΡΠΈ ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ "ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΊΠ½ΠΎ". Π’ΠΈΠΏ ΡΡΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π² Delphi - HWND (WiNDow Handle, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΊΠ½ΠΎ).
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠΊΠ½Π°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΌΡΡΠ» ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠΊΠ½ΠΎ Π½Π° Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Delphi ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π€ΠΎΡΠΌΡ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Form2, ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnClick ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ:
begin
if H <> 0 then
ShowMessage ("ΠΡΡΡ Form1!" )
else
ShowMessage ("ΠΠ΅Ρ Form1!" )
end ;
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ»Π°ΡΡ ΠΎΠΊΠ½Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊ "TForm1", Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ "Form1". Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±Π΅ Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΡΠ΄Π°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ "Form1" Π·Π°ΠΊΡΡΡΡ, ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΡΠ΄Π°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ API FindWindow, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΈΠΏΠ° HWND - ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π½ΠΎΠ»Ρ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.
ΠΡΠ°ΠΊ, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΊΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠΊΠ½ΠΎ. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Handle ΡΠΎΡΠΌΡ ΠΈ Π΅ΡΡΡ ΡΡΠ° ΡΡΡΠ»ΠΊΠ°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ API CreateWindow - ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π°. ΠΠΌΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠΊΠ½ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±ΡΠ°Π΅ΡΡΡ Ρ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ-ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈΠΌΠ΅ΡΡΠ΅Π΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ ΡΡΠΎΠΌΡ ΠΎΠΊΠ½Ρ. ΠΡΠ»ΠΈ ΠΎΠΊΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΎ Π² Π²ΠΈΠ΄Ρ ΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠΊΠ½ΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ. ΠΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ ΡΠΎΠΊΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½ΠΈΡ .
ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnMouseMove ΡΠΎΡΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊ Π²ΠΈΠ΄Ρ:
procedure TForm2.FormMouseMove (Sender: TObject ;
Shift: TShiftState; X, Y: Integer ) ;
begin
Caption:= "x=" + IntToStr (X) + ", y=" + IntToStr (Y) ;
end ;
Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠΎΡΠΌΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ.
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΄Π²Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠΊΠ½ΠΎ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ ΡΠΎΠΊΡΡ ("Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅"), ΡΠΎΠΆΠ΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ.
ΠΠΌΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠΊΠ½ΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Ρ Π½ΠΈΠΌ Π»ΡΠ±ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ»ΠΊΠΈ Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π»ΡΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ:
procedure TForm2.Button1Click (Sender: TObject ) ;
begin
H:= FindWindow ("TForm1" , "Form1" ) ;
if H <> 0 then
SendMessage(H, WM_CLOSE, 0 , 0 ) ;
end ;
ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΊΠ»Π°ΡΡΠ° "TForm1" Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ "Form1", Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_CLOSE - ΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΆΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠΎ ΠΎΠΊΠ½ΠΎ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅Π»ΡΠΊΠ° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊ Π²ΠΈΠ΄Ρ:
begin
Dc:= GetDC (Handle) ;
ReleaseDC (Handle, dc) ;
end ;
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΠΎΠΊΠ½Π° ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ. ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Windows.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΆΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄:
procedure TForm2.Button2Click (Sender: TObject ) ;
begin
Window:= FindWindow ("TForm1" , "Form1" ) ;
if Window <> 0 then
begin
Dc:= GetDC (Window) ;
Rectangle (dc, 10 , 10 , 110 , 110 ) ;
ReleaseDC (Handle, dc) ;
end ;
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΎΠΊΠ½ΠΎ ΠΊΠ»Π°ΡΡΠ° "TForm1" Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ "Form1", Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΆΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π·Π°ΠΊΡΡΡΡ Project1.exe ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² Delphi ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΠΎΠΊΠ½Π° ΡΠΎΡΠΌΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Windows Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠΈΠΏΠ° HDC (Handle Device Context, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ), Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΈΠΏΠ° HWND - ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΊΠ½ΠΎ, ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅Ρ
Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΊΠΎΠ½. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ Delphi ΡΡΡΠ»ΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ Π»ΠΈΠ±ΠΎ Integer, Π»ΠΈΠ±ΠΎ LongWord.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° OpenGL, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows, ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΎΠΊΠ½ΠΎ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ - ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ - Π²Π΅Π»ΠΈΡΠΈΠ½Π° ΡΠΈΠΏΠ° HGLRC (Handle openGL Rendering Context, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ OpenGL). ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° OpenGL Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠΈΠΏΠ° HDC (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ) ΠΎΠΊΠ½Π°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π²ΡΠ²ΠΎΠ΄.
ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ private ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΡΠΌΡ:
Π ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnCreate ΡΠΎΡΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΡΠΎΠΊ:
DC:= GetDC(Handle) ;
SetDCPixelFormat;
Hrc:= wglCreateContext(DC) ;
WglMakeCurrent(DC, hrc) ;
Π’ΠΎ Π΅ΡΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Windows, Π·Π°Π΄Π°Π΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ OpenGL ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ OpenGL ΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ.
ΠΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΡΠ΅ΠΉΡΠ°Ρ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΈΠΏΠ° HDC ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π°, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnCreate, ΠΈΠ»ΠΈ, Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_CREATE. ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΌ Π΄Π»Ρ Windows-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΌΠ½Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π΄Π»Ρ Windows 9X ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ OnShow ΠΈΠ»ΠΈ OnPaint. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊ ΠΈ Π΅ΡΡΡ, ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡΡΡ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Windows ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ OpenGL ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎ Π΅ΡΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠ²ΠΎΠ΄Π° OpenGL ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ:
dc:= BeginPaint(Window, ps)
;
wglMakeCurrent(DC, hrc)
;
wglMakeCurrent(0
, 0
)
;
EndPaint (Window,ps)
;
ReleaseDC (Window, dc)
;
ΠΠΎΠ²ΡΠΎΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄Π»Ρ Windows-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. Π― ΠΆΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°Ρ ΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Ρ
ΠΎΡΡ ΠΌΡ ΠΎΡΠ΄Π°Π΅ΠΌ ΡΠ΅Π±Π΅ ΠΎΡΡΠ΅Ρ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ "Π³Π»ΡΠΊΠΎΠ²Π°ΡΠΎΡΡΠΈ" ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ ΡΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π Π½Π°ΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ OpenGL ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnCreate, Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnDestroy.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ - ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ OpenGL ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ gl Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ
Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ opengl32.dll ΠΈ glu Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ
Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ glu32.dll. ΠΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ opengl.pas. Π€ΡΠ½ΠΊΡΠΈΠΈ OpenGL, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ OpenGL ΠΏΠΎΠ΄ Windows, ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ wgl, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, wglCreateContext, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SwapBuffers. ΠΡ
ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ windows.pas.
ΠΡΠ»ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ "ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅" ΠΈ "ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ" ΠΠ°ΠΌΠΈ ΠΏΠΎΠ½ΡΡΡ, ΡΠ΅ΠΉΡΠ°Ρ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ WinMin.dpr ΠΈ Paint.dpr Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Beginer/0. Π ΡΠΏΠΈΡΠΊΠ΅ uses Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π° ΠΌΠΎΠ΄ΡΠ»Ρ - Windows ΠΈ Messages (SysUtils Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Paint Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ VCL Delphi. ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ 16-ΡΠΈ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΈ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅, ΡΠΌΠ΅ΡΡ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΠ΅, Π½ΠΎ Π΄Π»Ρ Π½Π°Ρ Π²Π°ΠΆΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠΎΠ³ΠΎ Borland Pascal-Ρ, Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ, ΠΏΠ»ΠΎΡ
ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π΄Π»Ρ Π½Π°ΡΠΈΡ
Π·Π°Π΄Π°Ρ. ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠΎΠ½ΡΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ, ΠΊΠ°ΠΊΡΡ ΠΊΠ°ΡΠΎΡΠΎΠΆΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π° Π½Π°Ρ Delphi, ΠΈ ΠΊΠ°ΠΊ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠ΅ΠΊΡΡ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ Ρ
ΠΎΡΠΎΡΠΎ ΠΎΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΠ°ΠΌ Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
ΠΡΠ»ΠΈ ΠΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ GDI Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°, ΠΡ ΡΡΠ½Π΅Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΈΠ½Π° OpenGL ΡΠΈΡΡΠ΅Ρ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΆΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
OpenGL ΠΈ Delphi. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ OpenGL Π² Delphi. ΠΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΠ°Ρ ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ OpenGL ΠΈ Delphi. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π΄Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΌΡΡΠ», ΠΊΠ°ΠΊ OpenGL ΠΈ Delphi ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Ρ OpenGL Π² Delphi, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» OpenGL ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Delphi.
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ Delphi ΡΠΆΠ΅ Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ OpenGL, Π½ΠΎ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Ρ ΠΎΡΠΎΡΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Ρ Delphi Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ΅ΡΠ±Π½ΡΠΌΠΈ, Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenGL, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ. ΠΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenGL Π² Delphi Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» DGLOpenGL.pas Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ ΡΠ°ΠΉΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² (ΠΊΠΎΠΌΠ°Π½Π΄Ρ DGL) www.delphigl.com .
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» dglOpenGL.pas ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ β\libβ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Delphi.
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Delphi, ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΊΡΡΡΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Windows 7. ΠΠ°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ β\libβ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ Π½Π° Π½Π΅ΠΉ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠ°ΡΡ Β«ΡΠ²ΠΎΠΉΡΡΠ²Π°Β» ΡΠ½ΡΡΡ Π³Π°Π»ΠΎΡΠΊΡ Β«ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡΒ». ΠΠΎΡΠΎΠΌ Π²ΡΠ±ΡΠ°ΡΡ Π·Π°ΠΊΠ»Π°Π΄ΠΊΡ Β«Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΒ» Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΒ». ΠΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ Β«ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΡ Β«lib»». Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ (ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠΈΡΡΠ½ΠΎΠΊ Π½ΠΈΠΆΠ΅).
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenGL, ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, ΡΠ°Π½ΡΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»Π° Π²ΠΎΠ»ΠΎΡΡ Π½Π° Π΄ΡΠ±Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ, dglOpenGL.pas ΡΡΠΎ ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΠ΅. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ dglOpenGL Π² ΡΠ°Π·Π΄Π΅Π» Uses ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ unit1.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΄Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΡΠΌΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ public (ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Ρ):
dc: HDC β ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²
hrc: HGLRC β ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ OpenGL, ΡΡΠΎΠ±Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² ΡΠΎΠ±ΡΡΠΈΠΈ OnCreate ΡΠΎΡΠΌΡ:
Π‘ΡΡΠΎΡΠΊΠ° Application.OnIdle:= IdleHandler; ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π½ΠΈΠΆΠ΅.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ Π²ΡΡΡΠ½ΡΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Delphi,ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄ΠΎΠ»ΡΡΠ΅, Π° Ρ InitOpenGL Π²ΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅ΠΉ), Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΡΡΠ°Π·Ρ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ OpenGL, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Ρ Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ
. ΠΠΎ ΡΠ°ΡΡΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² OpenGL Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΈΡ
Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: SetupGL.
Π’ΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Ρ glClearColor. Π OpenGL ΡΠ²Π΅ΡΠ° Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠ°ΠΊ ΡΠΌΠ΅ΡΡ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° SetupGL Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ FormCreate:
[β¦]
ActivateRenderingContext(dc,hrc); //Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°
end; Π’Π°ΠΊ ΠΊΠ°ΠΊ OpenGL Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΎΡΠΌΡ, ΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ Π²ΡΡ
ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ OpenGL, ΠΈ Π½Π΅ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΡΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ OnResize ΠΈ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ.
Π‘ΡΡΠΎΠΊΠ° 2: ΠΡΠΎ Π±ΡΠ»Π΅Π²Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°Π½Π΅ΠΊΠ΅Π½.
Π‘ΡΡΠΎΠΊΠ° 4: ΠΠ°Π΄Π°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π»Π΅Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΠ³Π»ΠΎΠ² (Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
, Π² ΠΎΠΊΠΎΠ½Π½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
).
Π‘ΡΡΠΎΠΊΠ° 5: ΠΠ°Π΄Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°
Π‘ΡΡΠΎΠΊΠ° 6 ΠΈ 9: Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π²Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ.
Π‘ΡΡΠΎΠΊΠ° 7: ΠΠ΄Π΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ Π·ΡΠΈΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΠ΅Π½Ρ.
Π‘ΡΡΠΎΠΊΠ° 8: ΠΠ°Π΄Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°
Π‘ΡΡΠΎΠΊΠ° 11: Π’ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ IdleHandler, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ NearClipping ΠΈ FarClipping Π² ΡΠ°ΡΡΠΈ Const. ΠΠ½ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄ΠΎ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½) ΠΈ ΠΈΠ³ΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΎΠ»Ρ Π² ΡΠ΅ΡΡΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ, ΡΠΎ ΡΡΠΎ Π±Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ½ΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ ΠΎΡΡΠ°Π²Π»ΡΠ»ΠΈ ΠΌΡΡΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΡΠΎΠ±ΡΡΠΈΠΈ OnDestroy.
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΡΠ΄ΡΠΎ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠ°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Render:
Π‘ΡΡΠΎΠΊΠ° 3: ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ° ΠΈ Π±ΡΡΠ΅Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΄Π°Π»ΡΠ»ΠΈΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ, Π²Ρ ΡΠ²Π΅Π΄ΠΈΡΠ΅ Π²ΡΠ΅ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅, ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ
ΠΎΡΠ΅Π»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ. Π¦Π²Π΅Ρ Π±ΡΡΠ΅ΡΠ° Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ, Π° ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ glClearColor, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡ
Π‘ΡΡΠΎΠΊΠ° 7: Π·Π΄Π΅ΡΡ ΡΠ½ΠΎΠ²Π° ΡΡΠ°Π²ΠΈΡΡΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°. ΠΡΠΎΡ ΠΆΠ΅ Π²ΡΠ·ΠΎΠ² ΠΈ ΠΏΡΠΈ FormResize, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ. ΠΠ½Π°ΡΠ΅ ΠΏΠΎΡΠ»Π΅ Resize Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ, ΡΠΎ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ.
Π‘ΡΡΠΎΠΊΠ° 12: ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Β«ΠΊΠ°ΠΌΠ΅ΡΡΒ» (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π°Π΅Ρ), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ. ΠΡΠ΅ ΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±Π»ΠΈΠ·ΠΊΠΎ, ΠΎΡΡΠ΅Π·Π°Π΅ΡΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ΡΡΠΎΠΊΠ° 14: glBegin/glEnd ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΌΠΈ ΡΡΡΠΎΡΡΡΡ ΠΊΡΠ°ΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ. ΠΡΠΌΠ°Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ
Π²Π°ΡΠΈΡΡ. ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: OpenGl Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Π³Π΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ. ΠΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΠΊΠ°Π΄ΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ OpenGL.
Π‘ΡΡΠΎΠΊΠ° 21: SwapBuffers Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±ΡΡΠ΅ΡΠ° ΠΊΠ°Π΄ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ΅Π· ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ OpenGL.
Π’Π°ΠΊβ¦ΠΡΠ»ΠΈΡΠ½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·Π²Π°ΡΡ Π΅Ρ. ΠΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π² ΠΈΠ³ΡΠ°Ρ , ΡΡΠΎΠ± ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°. ΠΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°, ΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ
ΠΡΠ³ΡΠΌΠ΅Π½Ρ |
Π’Π°ΠΉΠΌΠ΅Ρ |
|
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΠΎΡΠ° ΠΊΠ°Π΄ΡΠΎΠ² Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠ° |
||
Π§ΠΈΡΠ»ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠΎ |
Π£ΡΠ»ΠΎΠ²Π½ΠΎ (Π·Π°ΡΡΡΠ΄Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ) |
|
ΠΠΎΡΡΡΠΏΠ½Π° ΠΏΠ»Π°Π²Π½Π°Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ (Π΄Π»Ρ ΡΡΡΠ΅ΡΠΎΠ²) |
Π£ΡΠ»ΠΎΠ²Π½ΠΎ (ΠΏΠ»ΠΎΡ ΠΎ) |
|
ΠΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ |
||
ΠΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ (ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ) |
||
ΠΠ΅ ΡΠ°Π·ΡΠ΅ΠΆΠ°Π΅Ρ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ ΡΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² |
ΠΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ 25 ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π±Π°ΡΠ°ΡΠ΅Ρ Π½ΠΎΡΡΠ±ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ. ΠΡΠΎ Ρ
ΠΎΡΠ΅Ρ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OnIdle.
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ, ΡΠ°ΠΉΠΌΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π½Π° ΡΠΎΡΠΌΡ. Π’Π°ΠΉΠΌΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ² Β«ΠΠ½ΡΠ΅ΡΠ²Π°Π»Β». Π‘ ΡΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΡΠΎΠ±ΡΡΠΈΠ΅ OnTimer Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Render. ΠΠ΅Π»ΡΠ·Ρ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅ 25 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Windows.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ OnIdle, ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠΈΠΏΠ° TIdleEvent Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΈ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΡΠΌΠΎΡΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Β«ΡΠΎΠ±ΡΡΠΈΠ΅ IdleΒ», Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅ΠΏΠ΅ΡΡ Π»ΠΈΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠ³Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠΎΡΠΌΡ OnCreate Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΡΠΊΠ΅:
[β¦]
SetupGL; //ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠΎΠ² OpenGL
Application.OnIdle:= IdleHandler;
end; ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π° 100% (ΡΡΠΎ ΠΏΠ»ΠΎΡ
ΠΎ Π΄Π»Ρ Π±Π°ΡΠ°ΡΠ΅ΠΈ Π½ΠΎΡΡΠ±ΡΠΊΠ°), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΡ ΡΡΠΎ, ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ ΡΡΡΠΊΠΎΠΌ:
Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ βDone:= falseβ ΡΡΡΠΎΠΊΡ Sleep(1) ΠΈΠ»ΠΈ Sleep(5). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄ΠΎ 80%. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ IdleHandler Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡΡ ΡΠ°ΠΊ:
ΠΠΎΡ ΠΈ Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎ, ΡΡΠΎ Ρ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΠΏΡΠΎΡΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅, ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°.