MathgeomGLS
74 строки · 1.5 Кб
1unit fHalfSphere;
2
3interface
4
5uses
6Winapi.Windows,
7Winapi.Messages,
8System.SysUtils,
9System.Variants,
10System.Classes,
11
12Vcl.Graphics,
13Vcl.Controls,
14Vcl.Forms,
15Vcl.Dialogs,
16
17GLS.Scene,
18GLS.Coordinates,
19GLS.Objects,
20GLS.State,
21GLS.SimpleNavigation,
22GLS.SceneViewer,
23GLS.BaseClasses,
24GLS.Material,
25GLS.RenderContextInfo,
26GLSL.UserShader;
27
28type
29TFormHalfSphere = class(TForm)
30GLScene1: TGLScene;
31GLSceneViewer1: TGLSceneViewer;
32GLMaterialLibrary1: TGLMaterialLibrary;
33GLSimpleNavigation1: TGLSimpleNavigation;
34GLSphere1: TGLSphere;
35GLCamera1: TGLCamera;
36GLLightSource1: TGLLightSource;
37GLUserShader1: TGLUserShader;
38procedure GLUserShader1DoUnApply(Sender: TObject; Pass: Integer; var rci: TGLRenderContextInfo;
39var Continue: Boolean);
40procedure GLUserShader1DoApply(Sender: TObject; var rci: TGLRenderContextInfo);
41private
42public
43end;
44
45var
46FormHalfSphere: TFormHalfSphere;
47
48implementation
49
50{$R *.dfm}
51
52procedure TFormHalfSphere.GLUserShader1DoApply(Sender: TObject; var rci: TGLRenderContextInfo);
53begin
54rci.GLStates.Enable(stCullFace);
55rci.GLStates.CullFaceMode := cmBack;
56end;
57
58procedure TFormHalfSphere.GLUserShader1DoUnApply(Sender: TObject; Pass: Integer;
59var rci: TGLRenderContextInfo; var Continue: Boolean);
60begin
61if Pass > 1 then
62begin
63Continue := False;
64rci.GLStates.FrontFace := fwCounterClockWise;
65end
66else
67begin
68rci.GLStates.PolygonMode := pmLines;
69rci.GLStates.CullFaceMode := cmFront;
70Continue := True;
71end;
72end;
73
74end.
75