
12.02.2009, 23:55
|
Прохожий
|
|
Регистрация: 16.10.2008
Сообщения: 38
Репутация: 10
|
|
Динамический массив точек(вершин) в DirectX
Сообственно как его сделать в DirectXе?
Если сделать так
Код:
procedure CreateQuad();
var
hRes:HRESULT;
// svVortexList : array [0..iVertsNum] of sVertex;
svVortexList : array of sVertex;
pBuf:Pointer;
begin
setlength(svVortexList,iVertsNum);
// Грань 1
svVortexList[0].x:=-0.5; svVortexList[0].y:=-0.5; svVortexList[0].z:=-0.5; svVortexList[0].Color:=D3DCOLOR_XRGB(0,0,255);
svVortexList[1].x:=-0.5; svVortexList[1].y:=0.5; svVortexList[1].z:=-0.5; svVortexList[1].Color:=D3DCOLOR_XRGB(0,0,255);
svVortexList[2].x:=0.5; svVortexList[2].y:=-0.5; svVortexList[2].z:=-0.5; svVortexList[2].Color:=D3DCOLOR_XRGB(0,0,255);
svVortexList[3].x:=0.5; svVortexList[3].y:=0.5; svVortexList[3].z:=-0.5; svVortexList[3].Color:=D3DCOLOR_XRGB(0,0,255);
// Грань 2
...
hRes := pD3DDevice.CreateVertexBuffer(sizeof(sVertex) *
iVertsNum, 0 , D3DFVF_XYZ or D3DFVF_DIFFUSE,
D3DPOOL_DEFAULT, &vBuffer, nil);
if (FAILED(hRes)) then
exit;
hRes := vBuffer.Lock(0, sizeof(sVertex) * iVertsNum, pBuf, 0);
if (FAILED(hRes))then
exit;
move(svVortexList, pBuf^, sizeof(sVertex) * iVertsNum);
vBuffer.Unlock();
end;
то перестает рисовать обьект (кубик).
Соотвественно
Код:
type
sVertex=record
x, y, z:Single;
color:DWORD;
end;
var
...
const
iVertsNum=24;
iIdxNum=35;
iPointsNum=12;
|