NVIDIA PerfHUD 6.62.120.1800
NVIDIA GeForce GTX 460
Treiberversion 285.62
Device Creation:
Code: Alles auswählen
procedure Direct3D_Start(g_HWND: DWord);
var
i: Integer;
AdapterToUse: Cardinal;
DeviceType: D3DDEVTYPE;
Identifier: D3DADAPTER_IDENTIFIER9;
VPF: Cardinal;
hr: HRESULT;
D3DAPI: IDirect3D9;
Caps: TD3DCaps9;
DPP: TD3DPresentParameters;
deskh, deskw: Integer;
swap: IDirect3DSwapChain9;
begin
D3DAPI:=Direct3DCreate9(D3D_SDK_VERSION);
{$REGION ' Presentparameters '}
GetScreenSize(deskw, deskh);
ZeroMemory( @DPP, sizeof(DPP) );
with DPP do begin
Windowed := true;
SwapEffect := D3DSWAPEFFECT_DISCARD;
BackBufferFormat:= D3DFMT_X8R8G8B8;
PresentationInterval:=D3DPRESENT_INTERVAL_IMMEDIATE;
// PresentationInterval:=D3DPRESENT_INTERVAL_DEFAULT;
BackBufferWidth:=deskw;
BackBufferHeight:=deskh;
BackBufferCount:=1;
hDeviceWindow:=g_HWND;
AutoDepthStencilFormat:=D3DFMT_D24S8;
// AutoDepthStencilFormat:=D3DFMT_D32F_LOCKABLE;
EnableAutoDepthStencil:=true;
end;
{$ENDREGION}
AdapterToUse:=D3DADAPTER_DEFAULT;
DeviceType:=D3DDEVTYPE_HAL;
D3DAPI.GetDeviceCaps(AdapterToUse, DeviceType, Caps);
{$REGION ' Vertex Processing '}
if Caps.VertexProcessingCaps=0 then VPF:=D3DCREATE_SOFTWARE_VERTEXPROCESSING
else VPF:=D3DCREATE_HARDWARE_VERTEXPROCESSING;
{$ENDREGION}
{$REGION ' Nvidia PerfHUD '}
if USE_PERFHUD then begin
for i := 0 to D3DAPI.GetAdapterCount-1 do begin
D3DAPI.GetAdapterIdentifier(i, 0, Identifier);
if pos('PerfHUD', StrPas(Identifier.Description))<>0 then begin
AdapterToUse:=i;
DeviceType:=D3DDEVTYPE_REF;
VPF:=D3DCREATE_HARDWARE_VERTEXPROCESSING;
PerfHUDStarted:=true;
end;
end;
end;
{$ENDREGION}
{$REGION ' Create Device '}
hr:=D3DAPI.CreateDevice( AdapterToUse, DeviceType, g_HWND, VPF or D3DCREATE_FPU_PRESERVE, @DPP, D3D );
if Failed(hr) then begin ShowMsg('Fehler beim erstellen des 3D Device: '+inttostr(hr)); exit; end;
{$ENDREGION}
D3D.GetSwapChain(0, swap);
swap.GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, MainSurface);
D3D.GetDepthStencilSurface(MainDepth);
D3D.SetRenderState(D3DRS_SRGBWRITEENABLE, cardinal(false));
end;
Die Werte, die übergeben werden:
Code: Alles auswählen
D3DXCreateTexture(D3D, 256, 256, 0, D3DUSAGE_AUTOGENMIPMAP, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, IDirect3DTexture9(Data));
Probleme macht aber auch D3DXCreateTextureFromFile...