1
unit LUX.GPU.OpenGL.Atom.Buffer.UniBuf;
3
interface //#################################################################### ■
5
uses Winapi.OpenGL, Winapi.OpenGLext,
8
LUX.GPU.OpenGL.Atom.Buffer;
10
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
12
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
14
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
16
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGLUniBuf<_TItem_>
18
IGLUniBuf = interface( IGLBuffer )
19
['{923ECB97-7686-4B53-A9FC-AB4365C7CC4B}']
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 );
26
//-------------------------------------------------------------------------
28
TGLUniBuf<_TItem_:record> = class( TGLBuffer<_TItem_,TGLBufferData<_TItem_>>, IGLUniBuf )
32
function GetKind :GLenum; override;
34
function InitAlign :GLint; override;
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 );
42
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
44
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
46
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
48
implementation //############################################################### ■
50
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
52
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
54
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGLUniBuf<_TItem_>
56
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
58
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
60
/////////////////////////////////////////////////////////////////////// アクセス
62
function TGLUniBuf<_TItem_>.GetKind :GLenum;
64
Result := GL_UNIFORM_BUFFER;
67
/////////////////////////////////////////////////////////////////////// メソッド
69
function TGLUniBuf<_TItem_>.InitAlign :GLint;
71
//glGetIntegerv( GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, @Result );
76
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
78
/////////////////////////////////////////////////////////////////////// メソッド
80
procedure TGLUniBuf<_TItem_>.Use( const BinP_:GLuint );
82
glBindBufferBase( GetKind, BinP_, _ID );
85
procedure TGLUniBuf<_TItem_>.Use( const BinP_:GLuint; const Offs_:Integer; const Size_:Integer = 1 );
87
glBindBufferRange( GetKind, BinP_, _ID, _Strid * Offs_, _Strid * Size_ );
90
procedure TGLUniBuf<_TItem_>.Unuse( const BinP_:GLuint );
92
glBindBufferBase( GetKind, BinP_, 0 );
95
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
97
//############################################################################## □
99
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
101
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
103
end. //######################################################################### ■