Entwickler-Ecke

Multimedia / Grafik - Texturanzeige in DirectX funktioniert nicht


Neidhard von Reuental - Fr 07.07.06 06:50
Titel: Texturanzeige in DirectX funktioniert nicht
Hallo,
habe gestern eine ganze Weile versucht das Problem zu lösen doch ich finde den Fehler einfach nicht.
Habe mir ein Device erzeugt und lade mir mit

Delphi-Quelltext
1:
  DXCopyImage:=Texture.FromBitmap(DXDevice,CopyImage,Usage.None,Pool.Managed);                    

CopyImage enthält dabei ein PNG in der Größe von 160x64

Zum Rendern der Textur habe ich mir eine Prozedur geschrieben die von der Render-Schleife zwischen BeginScene und EndScene aufgerufen wird:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TPanoView.RenderTexture(Dev:device;Tex:Texture;x:integer;y:integer;width:integer;height:integer;alpha:byte);
var
  screenVers : Array [0..3of CustomVertex.TransformedTextured;
begin
  screenVers[0] := CustomVertex.TransformedTextured.Create(x, y, 1100);
  screenVers[1] := CustomVertex.TransformedTextured.Create(x+width, y, 1110);
  screenVers[2] := CustomVertex.TransformedTextured.Create(x+width, y+height, 1111);
  screenVers[3] := CustomVertex.TransformedTextured.Create(x, y+height, 1101);
  Dev.SetTexture(0, Tex);
  Dev.VertexFormat := CustomVertex.TransformedTextured.Format;
  Dev.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, screenVers);
end;


Wie im Titel schon festgehalten, funktioniert die Anzeige der Grafik nicht. Es tritt aber auch kein Fehler auf, kann also das Problem nicht Lokalisieren :(
Den Code habe ich mir aus meinem C#-Programm nach Delphi umgeschrieben, und da funktioniert es.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        public void Texture(Device device,Texture texture,int x,int y,int width,int height,byte Alpha)
        {
            CustomVertex.TransformedTextured[] screenVers = new CustomVertex.TransformedTextured[4];
            screenVers[0] = new CustomVertex.TransformedTextured(x, y, 1100);
            screenVers[1] = new CustomVertex.TransformedTextured(x+width, y, 1110);
            screenVers[2] = new CustomVertex.TransformedTextured(x+width, y+height, 1111);
            screenVers[3] = new CustomVertex.TransformedTextured(x, y+height, 1101);
            device.SetTexture(0, texture);
            device.VertexFormat = CustomVertex.TransformedTextured.Format;
            device.DrawUserPrimitives(PrimitiveType.TriangleFan, 2, screenVers);
        }


Hat jemand eine Ahnung woran das liegen könnte?