Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.11.2009, 16:30

Vertexquad ausrichten

Hallo Community,

ich habe ein vertexquad mit einer textur darüber. das quad hat dieselbe größe wie meine bildschrimauflösung. nun will ich das quad genau auf den bildschirm rendern, also ohne ränder und in der richtigen größe. allerdings weiß ich nicht, wie ich view und projektionsmatrizen dafür anpassen müsste und habe immer irgendwelche ränder. weiß jemand was zu tun ist?



mfg macki

2

22.11.2009, 16:34

Also, du willst ein Quad über den ganzen Screen rendern ?

Stichwort: Transformierte Vertices

3

22.11.2009, 16:41

wie muss ich die denn transformieren? zurechtrücken, skalieren oder so?

4

22.11.2009, 16:44

Wenn du DirectX benutzt:

in die Vertexstruktur :

C-/C++-Quelltext

1
2
Vector2 Position; // Die Positon ist nun 2D

float      RHW; // Repricial Homogeneus W


ins FVF also

C-/C++-Quelltext

1
 D3DFVF_XYZRHW 


das besondere an diesen Vertices ist, dass sie die Transformationspipeline überhaupt nicht durchlaufen, sondern direkt an den Rasterizer gehen.

5

22.11.2009, 17:04

hm, funktioniert nur in 1024x768 perfekt. in 800x600 und 640x480 wird das quad zu groß gezeichnet, bei 1280x1024 zu klein.
übrigens ist die textur ein rendertarget welches ich für postshader verwenden will. zuvor habe ich meine sprites mit der xinternen sprte-klasse gerendert.

6

22.11.2009, 17:09

Musste halt umrechnen.

7

22.11.2009, 17:17

ok, vielen dank. war nur nen dummer fehler bei der daklaration der vertices. nun klappt alles und ich kann mich an die pixelshader ranwagen.

mfg macki

8

10.12.2009, 12:45

Gib x,x2,y,y2 an und:


// Umwandlung von ScreenSpace in ViewSpace

float sx = 2.0f/(window_width); // -1,+1
float sy = 2.0f/(window_height); // +1,-1

float dx = -1.0f +sx *x;
float dy = 1.0f -sy *y;
float dx2 = -1.0f +sx *x2;
float dy2 = 1.0f -sy *y2;

VertexArray[0].Pos = D3DXVECTOR3( dx, dy, z );
VertexArray[1].Pos = D3DXVECTOR3( dx2, dy, z );
VertexArray[2].Pos = D3DXVECTOR3( dx2, dy2, z );
VertexArray[3].Pos = D3DXVECTOR3( dx, dy2, z );

Jetzt fehlt Dir nur noch die Z-Achse,
nimm was du möchtest zw. 0-1.

.

Werbeanzeige