Class TExecuteBuffer (unit TExecute) |
Inherits from
TObject
Direct3D Immediate mode test by Massimo Bardetti - bigben@dircon.co.uk. This unit implement TExecute a delphi wrapper for DX3 Execute buffers. Important : Always add vertices first.
constructor Create ( pID3D : IDirect3dDevice; pIViewPort : IDirect3dViewport; size : integer ; pEbRoot : TExecuteBuffer) ;
- //////////////////////////////////////////////////////////////// Create the object with the following parameters : pID3D : A direct3D device object pIViewport : A Direct3d Viewport object size : size in bytes of the execute buffer
function AddAmbLight(clr : D3DColor) : Boolean;
AddAmbientLight : Add Ambient Light!! clr is a 32 bit value ($RRGGBB
function AddByte(b : BYTE) : Boolean;
AddByte : Add one byte to the buffer
function AddChild(isize : integer) : TExecuteBuffer;
Add a child buffer
function AddIns(op : D3DOPCODE; size : BYTE; count : WORD) : boolean;
AddIns : Add D3D Op code
function AddLightState(state : D3DLIGHTSTATETYPE; Value : DWORD) : boolean;
function AddLine(v1 : Integer; v2 : Integer) : boolean;
AddLine : Add a single line
function AddLines(var pLines : D3DLINE; nLine : Integer) : boolean;
AddLines : Add a set of lines connecting two vertices
function AddLitVertices(pVert : PPointerList; nVert : integer) : boolean;
AddLitVertices : Add a set of vertices that has been lit and transformed by your code.
function AddMaterial(hMat : D3DMATERIALHANDLE) : boolean;
AddMaterial : Add material handle
function AddMatMul(hDest, hSrc1, hSrc2 : D3DMATRIXHANDLE) : boolean;
AddMatMul : Add a Matrix Multiplication to rotate/translate transformation matrices
function AddPoint(v : integer) : boolean;
AddPoint : Add point representing vertex
function AddPoints(var pPointInfo : D3DPOINT) : boolean;
AddPoints : Add a set of points
function AddProcess(nVert : Integer; iStart : Integer; dwFlags : DWORD) : boolean;
AddProcess : Add a process instruction nVert : number of vertices to process iStart : first vertex to process dwFlags : Flags (D3DPROCESSVERTICES_ type
function AddRenderState(state : D3DRENDERSTATETYPE; Value : DWORD) : boolean;
AddRenderState : Add a rander state instruction
function AddState(t : D3DTRANSFORMSTATETYPE; h : D3DMATRIXHANDLE) : boolean;
AddState : Add D3D State transformations (matrices) t : Type of transofrmation (world,projection, view .
function AddStruct(pStruct : pointer; iSize : integer) : boolean;
AddStruct : Add a portion of memory yo the buffer
function AddTriangle(v1,v2,v3 : Integer) : Boolean;
AddTriangle : Add Triangle connection v1,v2,v3 vertices
function AddTriangleData(ptri : D3DTRIANGLE) : Boolean;
function AddTriangleOperation(inum : Integer) : Boolean;
AddTriangleOperation : Add the Triangle operation and the number of tringles following it This function must always be followed by AddTriangleData to add iNum traingles to the execute buffer.
function AddVertices(pVert : PPointerList; nVert : integer) : boolean;
AddVertices : Add a set of vertices If your buffer will conatin vertices this is always the first instruction to do before adding anything else pVert : is a pointer to an array of pointers of D3DVERTEX type (eg.
destructor Destroy ;
function Execute : Boolean;
Execute : Unlocks and execute the buffer
function GetChild(i : Integer) : TExecuteBuffer;
function GetExecuteData(var ped : D3DEXECUTEDATA) : boolean;
GetExecuteData : Fills a D3DEXECUTEDATA passed by reference
function LockBuffer : pointer;
//////////////////////////////////////////////////////////////// LockBuffer : lock the buffer in memory and return the pointer to the memory where it reside
function NumChilds : Integer;
procedure RemoveChild(EBCHild : TexecuteBuffer);
function UnLockBuffer : HResult;
Tag : Integer;
EBParent : TExecuteBuffer;
EBTemp : Pointer;
iExecuteOnce : integer;
lstEBChilds : TList;
m_Desc : D3DEXECUTEBUFFERDESC;
m_dwInsOffset : Integer;
m_dwOffset : Integer;
m_pID3D : IDirect3dDevice;
m_pIEB : IDirect3DExecuteBuffer;
m_pIViewPort : IDirect3dViewport;
constructor Create ( pID3D : IDirect3dDevice; pIViewPort : IDirect3dViewport; size : integer ; pEbRoot : TExecuteBuffer) ;
//////////////////////////////////////////////////////////////// Create the object with the following parameters : pID3D : A direct3D device object pIViewport : A Direct3d Viewport object size : size in bytes of the execute buffer
function AddAmbLight(clr : D3DColor) : Boolean;
AddAmbientLight : Add Ambient Light!! clr is a 32 bit value ($RRGGBB
function AddByte(b : BYTE) : Boolean;
AddByte : Add one byte to the buffer
function AddChild(isize : integer) : TExecuteBuffer;
Add a child buffer
function AddIns(op : D3DOPCODE; size : BYTE; count : WORD) : boolean;
AddIns : Add D3D Op code
function AddLightState(state : D3DLIGHTSTATETYPE; Value : DWORD) : boolean;
function AddLine(v1 : Integer; v2 : Integer) : boolean;
AddLine : Add a single line
function AddLines(var pLines : D3DLINE; nLine : Integer) : boolean;
AddLines : Add a set of lines connecting two vertices
function AddLitVertices(pVert : PPointerList; nVert : integer) : boolean;
AddLitVertices : Add a set of vertices that has been lit and transformed by your code. This is useful if you want to create your own lighting and transformation code.
function AddMaterial(hMat : D3DMATERIALHANDLE) : boolean;
AddMaterial : Add material handle
function AddMatMul(hDest, hSrc1, hSrc2 : D3DMATRIXHANDLE) : boolean;
AddMatMul : Add a Matrix Multiplication to rotate/translate transformation matrices
function AddPoint(v : integer) : boolean;
AddPoint : Add point representing vertex
function AddPoints(var pPointInfo : D3DPOINT) : boolean;
AddPoints : Add a set of points
function AddProcess(nVert : Integer; iStart : Integer; dwFlags : DWORD) : boolean;
AddProcess : Add a process instruction nVert : number of vertices to process iStart : first vertex to process dwFlags : Flags (D3DPROCESSVERTICES_ type
function AddRenderState(state : D3DRENDERSTATETYPE; Value : DWORD) : boolean;
AddRenderState : Add a rander state instruction
function AddState(t : D3DTRANSFORMSTATETYPE; h : D3DMATRIXHANDLE) : boolean;
AddState : Add D3D State transformations (matrices) t : Type of transofrmation (world,projection, view ..); h : handle to the matrix describing it
function AddStruct(pStruct : pointer; iSize : integer) : boolean;
AddStruct : Add a portion of memory yo the buffer
function AddTriangle(v1,v2,v3 : Integer) : Boolean;
AddTriangle : Add Triangle connection v1,v2,v3 vertices
function AddTriangleData(ptri : D3DTRIANGLE) : Boolean;
function AddTriangleOperation(inum : Integer) : Boolean;
AddTriangleOperation : Add the Triangle operation and the number of tringles following it This function must always be followed by AddTriangleData to add iNum traingles to the execute buffer.
function AddVertices(pVert : PPointerList; nVert : integer) : boolean;
AddVertices : Add a set of vertices If your buffer will conatin vertices this is always the first instruction to do before adding anything else pVert : is a pointer to an array of pointers of D3DVERTEX type (eg. TList.List) nvert : Number of vertices
ZeroMemory(@ed, sizeof(ed));
destructor Destroy ;
function Execute : Boolean;
Execute : Unlocks and execute the buffer
function GetChild(i : Integer) : TExecuteBuffer;
function GetExecuteData(var ped : D3DEXECUTEDATA) : boolean;
GetExecuteData : Fills a D3DEXECUTEDATA passed by reference
function LockBuffer : pointer;
//////////////////////////////////////////////////////////////// LockBuffer : lock the buffer in memory and return the pointer to the memory where it reside
function NumChilds : Integer;
procedure RemoveChild(EBCHild : TexecuteBuffer);
function UnLockBuffer : HResult;
Tag : Integer;
EBParent : TExecuteBuffer;
EBTemp : Pointer;
iExecuteOnce : integer;
lstEBChilds : TList;
m_Desc : D3DEXECUTEBUFFERDESC;
m_dwInsOffset : Integer;
m_dwOffset : Integer;
m_pID3D : IDirect3dDevice;
m_pIEB : IDirect3DExecuteBuffer;
m_pIViewPort : IDirect3dViewport;