Einzelnen Beitrag anzeigen

SonnyBoyPro

Registriert seit: 9. Mai 2007
68 Beiträge
 
#7

AW: DirectX 12 Header

  Alt 9. Jun 2015, 11:57
bin gerade (negativ) fasziniert....

hab probiert bei dem ID2D1Bitmap die Deklarationen zu ändern

Delphi-Quellcode:
ID2D1Bitmap = interface(ID2D1Image)
        ['{a2296057-ea42-4099-983b-539fb6505426}']
        function GetSize(): TD2D1_SIZE_F; stdcall;
        function GetPixelSize(): TD2D1_SIZE_U; stdcall;
        function GetPixelFormat(): TD2D1_PIXEL_FORMAT; stdcall;
        procedure GetDpi(out dpiX: single; out dpiY: single); stdcall;
// function CopyFromBitmap( destPoint: PD2D1_POINT_2U; bitmap: ID2D1Bitmap; srcRect: PD2D1_RECT_U): HResult; stdcall; // <- funkt
        function CopyFromBitmap(const destPoint: PD2D1_POINT_2U; bitmap: ID2D1Bitmap; const srcRect: PD2D1_RECT_U): HResult; stdcall;// <- funkt
// function CopyFromBitmap(const destPoint: TD2D1_POINT_2U; bitmap: ID2D1Bitmap; const srcRect: TD2D1_RECT_U): HResult; stdcall;// <- funkt
// function CopyFromBitmap(destPoint: TD2D1_POINT_2U; bitmap: ID2D1Bitmap; srcRect: TD2D1_RECT_U): HResult; stdcall; <- das crasht, weil ja kein Pointer übergeben wird
        function CopyFromRenderTarget(const destPoint: TD2D1_POINT_2U; renderTarget: ID2D1RenderTarget; const srcRect: TD2D1_RECT_U): HResult; stdcall;
        function CopyFromMemory(dstRect: PD2D1_RECT_U; srcData: Pointer; pitch: UINT32): HResult; stdcall;
    end;
Ergebis: alle 3 Varianten funktionieren (nur die 4te nicht in der das Record direkt übergeben wird, logo)


hab mal so probiert zu verwenden

Delphi-Quellcode:
 procedure TSkin.LoadSkin(DXDevice: TDXDevice; AFilename: WideString);
var
  dp:TD2D1_POINT_2U;
  ar: TD2D1_RECT_U;
  hr: HResult;

begin
    if FDLLHandle <> 0 then
        FreeLibrary(FDLLHandle);

    FDLLHandle := LoadLibraryW(pWideChar(AFilename));

    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'Button', 56, 56, FButton);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'InnerLabel', 54, 55, FInnerLabel);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'InnerLabelSelected', 54, 55, FInnerLabelSelected);

    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'ButtonSelected', 56, 56, FButtonSelected);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'Background', 1920, 1080, FBackground);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'ImageButton', 56, 56, FImageButton);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'ImageButtonSelected', 56, 56, FImageButtonSelected);

    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'CheckboxChecked', 18, 18, FCheckBoxChecked);
    D2DFunctions.LoadBitmapFromResource(DXDevice, FDLLHandle, 'CheckboxUnchecked', 18, 18, FCheckBoxUnChecked);

    dp.x:=12;
    dp.y:=2;
    ar.left:=0;
    ar.top:=0;
    ar.right:=50;
    ar.bottom:=50;
    hr:=FButtonSelected.CopyFromBitmap(@dp,FButton,@ar);
// hr:=FButtonSelected.CopyFromBitmap(dp,FButton,ar);
    if hr=0 then OutputDebugString('suuüa');


end;
Aufruf von CopyFromBitmap je nach Deklartion im Header.
Ergebnis siehe Anhang.

Unterscheiden sich hier Delphi und FPC wirklich so stark?
Ich hab ja die Header unter FPC in Verwendung. Z.B. gingen bei den DX10 Headern von JSB keine Effects weil das keine "echten" IUnknown interfaces sind, sondern welche denen die Referenzierung fehlt, JSB hat die mit class und die funktionen als virtual abstract deklariert.
Das geht unter FPC nicht, dafür gibts dort das CORBA interface, das hat keine Referenzzählung.

Welches Betriebssystem verwendest Du? 32 oder 64bit?
Miniaturansicht angehängter Grafiken
bitmap_copy_d2d1.png  
  Mit Zitat antworten Zitat