Delphi 我可以拥有IDirect3DVertexBuffer9的动态数组吗?

Delphi 我可以拥有IDirect3DVertexBuffer9的动态数组吗?,delphi,directx,Delphi,Directx,我正在与Delphi和DirectX合作。我想要IDirect3DVertexBuffer9的动态数组。可能吗?如果是,那怎么办 我已经为它写了一个代码。但是,这似乎是有问题的。我的代码如下所示- totalBuffer := 4; SetLength(g_pVB,totalBuffer); for cnt := 0 to totalBuffer - 1 do begin if FAILED(g_pd3dDevice.CreateVertexBuffer(1 * SizeOf(TD3

我正在与Delphi和DirectX合作。我想要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;

在这里,我面临的问题是,一旦它进入for循环,当
cnt
值为4时,它将继续并不会退出循环。如果我在for循环中写入静态值3而不是totalBuffer,当值为4时,它将退出循环。

您可以找到示例。在Cull-sample中,他们使用了“IDirect3DVertexBuffer数组”。

您的意思是,如果您对cnt使用
:=0到3
,它会按预期工作,但在当前的代码示例中它不会工作?@Himadri-在
上为
设置一个“断点”,在
总缓冲区上设置一个“监视”
,并开始追踪“totalBuffer”何时从4变为其他值;一些局部变量(假设totalBuffer是局部的)似乎正在覆盖它。那么,您实际已经看到这段代码执行了四次以上了吗?在第五次迭代中发生了什么?@sertac@Rob在第五次迭代中没有发生任何错误。但在一些循环之后,它显示了
totalBuffer
的垃圾值。如果我按F9,它将显示访问冲突的错误。我至少知道断点和手表的使用,只有我知道它执行了4次以上。哦,今天我让它正常工作了。可能是我的Delphi工具出了问题。无论如何,谢谢你的回复。