Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: DirectX Textur aus TBitmap laden

  Alt 10. Nov 2006, 17:13
Auch wenn dieser Thread schon ein wenig älter ist, hole ich ihn nochmal aus der Versenkung... Ich habe nämlich das selbe Problem.

Und zwar möchte ich ein TBitmap direkt in eine Textur laden.
Bisher versuche ich dies so:

Delphi-Quellcode:
function LoadTextureFromBitmap(Appl:TAndorraApplication;ABitmap:Pointer):TAndorraTexture;
var Texture:IDirect3DTexture9;
    Format,size:cardinal;
    Cursor: pWord;
    d3dlr: TD3DLocked_Rect;
begin
  result := nil;
  with TAndorraApplicationItem(Appl) do
  begin
    with TBitmap(ABitmap) do
    begin

      case PixelFormat of
        pf16bit: begin Size := 2; Format := D3DFMT_R5G6B5; end;
        pf24bit: begin Size := 3; Format := D3DFMT_R8G8B8; end;
        pf32bit: begin Size := 4; Format := D3DFMT_A8R8G8B8 end;
      end;

      if D3DXCreateTexture(Direct3D9Device, Width, Height,0, 0, Format, D3DPOOL_MANAGED, Texture) = D3D_OK then
      begin
        Texture.LockRect(0, d3dlr, nil, 0);
        Cursor := d3dlr.Bits;
        
        //Hier will ich den Bitmapspeicher in den Texturspeicher kopieren, leider gibt es eine AV
        Move(ScanLine[0]^,Cursor,Size*AWidth*AHeight);

        Texture.UnlockRect(0);
      end;

      IDirect3DTexture9(Result) := Texture;
    end;
  end;
end;
Leider gibt es (wie im Quellcode verzeichnet) eine AV beim kopieren des Bitmapspeichers in den Texturspeicher.
Bekomme ich mit "Scanline[0]" überhaupt den Pointer auf die erste Speicherstelle des Bitmaps? Ist meine Berrechnung von "Size" richtig? Mache ich sonst was falsch?

Danke für eure Antworten!
Andreas alias Igel457

[Edit]Einen "kleinen" Fehler selbst gefunden und im Code korrigiert...[/Edit]
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat