All pastes #960581 Raw Edit

Untitled

public text v1 · immutable
#960581 ·published 2008-03-28 07:55 UTC
rendered paste body
function InitD3D: HRESULT;
const
  wc: TWndClassEx = (
    cbSize: SizeOf(TWndClassEx);
    style: CS_CLASSDC;
    lpfnWndProc: @MsgProcD3D;
    cbClsExtra: 0;
    cbWndExtra: 0;
    hInstance: 0; // - filled later
    hIcon: 0;
    hCursor: 0;
    hbrBackground: 0;
    lpszMenuName: nil;
    lpszClassName: 'Grey';
    hIconSm: 0);

var
  d3dpp: TD3DPresentParameters;
begin
  RegisterClassEx(wc);
	g_hWnd := CreateWindowEx(WS_EX_APPWINDOW,
		PChar('Grey'),      // class name
		nil, // title for our window (appears in the titlebar)
		WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX,
		0, 0,  // initial x, y coordinate
		1, 1,   // width and height of the window
		HWND_DESKTOP,           // no parent window.
		0,           // no menu
		0,           // no creator
		nil );          // extra data

  if g_hWnd = 0 then
    RaiseLastOSError;

  Result:= E_FAIL;

  // Create the D3D object.
  g_pD3D := Direct3DCreate9(D3D_SDK_VERSION);
  if (g_pD3D = nil) then
  begin
    PInteger(0)^ := 1;
    Exit;
  end;

  // Set up the structure used to create the D3DDevice
  FillChar(d3dpp, SizeOf(d3dpp), 0);
  d3dpp.Windowed := True;
  d3dpp.SwapEffect := D3DSWAPEFFECT_DISCARD;
  d3dpp.BackBufferFormat := D3DFMT_UNKNOWN;

  // Create the D3DDevice
  Result:= g_pD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd,
                               D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                               @d3dpp, g_pd3dDevice);
  if FAILED(Result) then
  begin
    PInteger(0)^ := 1;
    Result:= E_FAIL;
    Exit;
  end;

  g_RenderFunc := PPointer(PInteger(g_pd3dDevice)^ + $44)^;
  g_RenderHook := TMultiHook.Create;
  g_RenderHook.DetourHook(g_RenderFunc, @MyRenderFunc);
end;