Показать сообщение отдельно
  #1  
Старый 12.02.2009, 23:55
ZZZRF413 ZZZRF413 вне форума
Прохожий
 
Регистрация: 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;
Ответить с цитированием