Я работаю с Delphi и DirectX. Мне нужен динамический массив IDirect3DVertexBuffer9. Является ли это возможным? Если да, то как?Могу ли я иметь динамический массив IDirect3DVertexBuffer9?
Я написал для этого код. Но, похоже, это проблематично. Мой код показан ниже -
totalBuffer := 4;
SetLength(g_pVB,totalBuffer);
for cnt := 0 to totalBuffer - 1 do begin
if FAILED(g_pd3dDevice.CreateVertexBuffer(1 * SizeOf(TD3DXVector3),
0, D3DFVF_XYZ,
D3DPOOL_DEFAULT, g_pVB[cnt], nil)) then begin
Result := E_FAIL;
Exit;
end;
if FAILED(g_pVB[cnt].Lock(0, 0, Pointer(pVert[cnt]), 0)) then begin
Result := E_FAIL;
Exit;
end;
pVert[cnt] := 0;
end;
здесь, проблема я столкнулся в том, что после того, как она войти в цикл продолжает и не выйти из цикла, когда cnt
значение 4. И если я пишу статическое значение 3 в для цикла вместо totalBuffer он выйдет из цикла, когда значение равно 4.
Вы имеете в виду, если вы используете 'for cnt: = 0 to 3', он работает по назначению, но в текущем примере кода это не так? –
@Sertac Да, это правда. – Himadri
@Himadri - Поместите «точку останова» на 'for' и« watch »на' totalBuffer' и начните трассировку, чтобы увидеть, когда «totalBuffer» изменяется с 4 на sth. еще; Некоторая локальная переменная (при условии, что totalBuffer является локальной), похоже, переписывает ее. –