Luxophia

Форк
0
/
LUX.GPU.OpenGL.Atom.Buffer.UniBuf.pas 
103 строки · 3.7 Кб
1
unit LUX.GPU.OpenGL.Atom.Buffer.UniBuf;
2

3
interface //#################################################################### ■
4

5
uses Winapi.OpenGL, Winapi.OpenGLext,
6
     LUX,
7
     LUX.GPU.OpenGL.Atom,
8
     LUX.GPU.OpenGL.Atom.Buffer;
9

10
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
11

12
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
13

14
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
15

16
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGLUniBuf<_TItem_>
17

18
     IGLUniBuf = interface( IGLBuffer )
19
     ['{923ECB97-7686-4B53-A9FC-AB4365C7CC4B}']
20
       ///// メソッド
21
       procedure Use( const BinP_:GLuint ); overload;
22
       procedure Use( const BinP_:GLuint; const Offs_:Integer; const Size_:Integer = 1 ); overload;
23
       procedure Unuse( const BinP_:GLuint );
24
     end;
25

26
     //-------------------------------------------------------------------------
27

28
     TGLUniBuf<_TItem_:record> = class( TGLBuffer<_TItem_,TGLBufferData<_TItem_>>, IGLUniBuf )
29
     private
30
     protected
31
       ///// アクセス
32
       function GetKind :GLenum; override;
33
       ///// メソッド
34
       function InitAlign :GLint; override;
35
     public
36
       ///// メソッド
37
       procedure Use( const BinP_:GLuint ); overload;
38
       procedure Use( const BinP_:GLuint; const Offs_:Integer; const Size_:Integer = 1 ); overload;
39
       procedure Unuse( const BinP_:GLuint );
40
     end;
41

42
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
43

44
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
45

46
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
47

48
implementation //############################################################### ■
49

50
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
51

52
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
53

54
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGLUniBuf<_TItem_>
55

56
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
57

58
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
59

60
/////////////////////////////////////////////////////////////////////// アクセス
61

62
function TGLUniBuf<_TItem_>.GetKind :GLenum;
63
begin
64
     Result := GL_UNIFORM_BUFFER;
65
end;
66

67
/////////////////////////////////////////////////////////////////////// メソッド
68

69
function TGLUniBuf<_TItem_>.InitAlign :GLint;
70
begin
71
     //glGetIntegerv( GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, @Result );
72

73
     Result := 1{Byte};
74
end;
75

76
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
77

78
/////////////////////////////////////////////////////////////////////// メソッド
79

80
procedure TGLUniBuf<_TItem_>.Use( const BinP_:GLuint );
81
begin
82
     glBindBufferBase( GetKind, BinP_, _ID );
83
end;
84

85
procedure TGLUniBuf<_TItem_>.Use( const BinP_:GLuint; const Offs_:Integer; const Size_:Integer = 1 );
86
begin
87
     glBindBufferRange( GetKind, BinP_, _ID, _Strid * Offs_, _Strid * Size_ );
88
end;
89

90
procedure TGLUniBuf<_TItem_>.Unuse( const BinP_:GLuint );
91
begin
92
     glBindBufferBase( GetKind, BinP_, 0 );
93
end;
94

95
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
96

97
//############################################################################## □
98

99
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
100

101
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
102

103
end. //######################################################################### ■

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.