 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 11.06.2004, 18:34 Titel: "2D-Dreiecke" bewegen |
|
|
Hi,
ich hab folgendes FVF:
Code: | #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1) |
Das Problem ist nur, dass, wenn ich D3DFVF_XYZRHW verwende, anscheinend keine Matrixtranslation mehr funktioniert?? Mag heißen, dass ich meine Dreiecke nicht bewegen kann. Weiß einer wie man das lösen könnte??
Vision |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 11.06.2004, 19:32 Titel: |
|
|
Problem hat sich geändert. Ich mach das jetzt im Orthomode.
Und zwar stelle ich am Anfang des Programms die View- und die ProjektionsMatrix so ein:
Code: | D3DXMATRIX ViewMatrix;
D3DXMatrixLookAtLH(&ViewMatrix,
&D3DXVECTOR3(0.0f, 0.0f,-10.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
Graphic.GetDevice()->SetTransform(D3DTS_VIEW,&ViewMatrix);
D3DXMATRIX ProjMatrix;
D3DXMatrixOrthoOffCenterLH(&ProjMatrix, 0, 640, 0, 480, -1, 1);
Graphic.GetDevice()->SetTransform(D3DTS_PROJECTION, &ProjMatrix); |
Wenn ich jetzt ein Viereck
Code: | CUSTOMVERTEX vertices[] =
{
{ 0.0f, 0.0f, 0.0f, 0xFF000000, 0.0f, 1.0f },
{ 200.0f, 0.0f, 0.0f, 0xFF000000, 0.0f, 0.0f,},
{ 200.0f, 200.0f, 0.0f, 0xFF000000, 1.0f, 0.0f,},
{ 0.0f, 0.0f, 0.0f, 0xFF000000, 1.0f, 0.0f,},
{ 200.0f, 200.0f, 0.0f, 0xFF000000, 1.0f, 1.0f,},
{ 0.0f, 200.0f, 0.0f, 0xFF000000, 0.0f, 1.0f,},
}; |
mit dem FVF:
Code: | #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
struct CUSTOMVERTEX
{
D3DXVECTOR3 position;
D3DCOLOR Color;
float tu, tv;
}; |
rendern will. Dann wird mir das Viereck nicht angezeigt. Hat einer ne Idee warum??
Vision |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.06.2004, 19:37 Titel: |
|
|
· Dreieck befindet sich zu nah an der NearClip Plane
· Dreieck ist hinter der Cam
· Dreieck befindet sich nicht mehr im sichtbaren Bereich der Camera
· Dreieck ist zu klein
bei der Orthogonalen Perspektive ist das besonders Schlimm. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 11.06.2004, 20:05 Titel: |
|
|
Vision hat Folgendes geschrieben: | Problem hat sich geändert. Ich mach das jetzt im Orthomode.
Und zwar stelle ich am Anfang des Programms die View- und die ProjektionsMatrix so ein:
Code: | D3DXMATRIX ViewMatrix;
D3DXMatrixLookAtLH(&ViewMatrix,
&D3DXVECTOR3(0.0f, 0.0f,-10.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
Graphic.GetDevice()->SetTransform(D3DTS_VIEW,&ViewMatrix);
D3DXMATRIX ProjMatrix;
D3DXMatrixOrthoOffCenterLH(&ProjMatrix, 0, 640, 0, 480, -1, 1);
Graphic.GetDevice()->SetTransform(D3DTS_PROJECTION, &ProjMatrix); |
... |
Probier die Matrizen mal aus:
Code: |
D3DXMATRIX matView;
D3DXMATRIX matWorld;
D3DXMatrixIdentity(&matView);
D3DXMatrixIdentity(&matWorld);
g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);
g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
|
und vor allem:
Code: |
D3DXMATRIX matProj;
D3DXMatrixOrthoLH(
&matProj,
800.0f,
600.0f,
0.0f,
1.0f);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION, &matProj);
|
Alle Polygone musst du jetzt nach der Auflösung 800 * 600 ausrichten... |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 12.06.2004, 08:24 Titel: |
|
|
KI hat Folgendes geschrieben: |
Alle Polygone musst du jetzt nach der Auflösung 800 * 600 ausrichten... |
Was meinst du mit ausrichten?? |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 12.06.2004, 09:41 Titel: |
|
|
Vision hat Folgendes geschrieben: | KI hat Folgendes geschrieben: |
Alle Polygone musst du jetzt nach der Auflösung 800 * 600 ausrichten... |
Was meinst du mit ausrichten?? |
Ein Polygon mit den 3-Ecken mit den Koordinaten (0, 600) (400, 0) (800, 600) hat seine ecken am Bildschirmrand.
Und zwar unabhängig von deiner tatsächlichen Bildschirmauflösung.
Beispiel:
Die Bildschirmauflösung beträgt 1600 * 1200
Wenn du Die Matritzen si wie oben beschrieben initialisierst ist das Dreieck mit seinen Ecken((0, 600) (400, 0) (800, 600)) am Bildschirmrand!
Also. kein lästiges Koordinaten der Polygone umrechnen, wenn die Auflösung sich ändert. (wenn man überhaupt die Auflösung ändern wollte) |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 12.06.2004, 13:09 Titel: |
|
|
Achso, jetzt versteh ich das. thx. Aber irgendwie funktioniert es immer noch nicht richtig. Muss noch ein bischen rumprobieren. |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 12.06.2004, 14:57 Titel: |
|
|
Soweit so gut. Das Problem ist nur das bei D3DXMatrixOrtho() Der Mittelpunkt des Fensters der Mittelpunkt der koordinaten ist. Ich hätte es aber lieber, das (0,0) die obere Linke Ecke des Fensters ist.
Ich habs mal mit D3DXMatrixOrthoOffCenterLH() probiert, aber da wird dann das Dreieck irgendwie nicht angezeigt wenn es die Koordinaten z.b. (0,0), (0,100), (100,100), hat. |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 12.06.2004, 18:01 Titel: |
|
|
Ich weiß leider nicht genau wie man D3DXMatrixOrthoOffCenterLH benutzt.
Ich benutze (wie gesagt) D3DXMatrixOrtho() und rechne die Koordinaten entsrechend um.
Genauer gesagt: Die Koordinaten der Objekte, bzw. Platten(oder Flächen) haben bei mir ihren Ursprung im [0, 0, 0] Punkt. (also in der Mitte des Bildschirms.) Mithilfe der Matrixtransformationsroutinen schiebe ich sie einfach dahin, wo ich sie haben will... |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 12.06.2004, 22:53 Titel: |
|
|
Werd ich wohl auch so machen müssen, denn bei D3DXMatrixOrthoOffCenterLH() funktioniert es nicht. Naja, egal.
Aber, wie machst du deine Dreiecke??
Code: | (-50.0f, 50.0f)-------------(50.0f,50.0f)
\ |
\ |
\ |
\ (50.0f,-50.0f)
|
oder
Code: | (0.0f, 0.0f)-------------(100.0f,0.0f)
\ |
\ |
\ |
\ (100.0f,100.0f)
|
Ich frag nur, weil ich mich noch nicht ganz entscheiden kann wie ich die Dreiecke am einfachsten umrechnen kann. Ich glaube die 2. Methode ist empfehlenswerter. Oder??
Vision |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 12.06.2004, 23:06 Titel: |
|
|
Ja. Ich finde die 2. Variante auch besser.
Aber leztendlich ist es Geschmackssache...
P.s.
Strg Alt Entf <---- das ist die geilste Tastatur, die ich je gesehen hab.
(musste mal gesagt werden ) |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 13.06.2004, 17:20 Titel: |
|
|
KI hat Folgendes geschrieben: | P.s.
Strg Alt Entf <---- das ist die geilste Tastatur, die ich je gesehen hab.
(musste mal gesagt werden ) |
Das genialste ist ja, das es die auch gibt Wird bei Servern verwendet, die normalerweise übers Netzwerk administriert werden. Mit der Tastatur kann man sie dann neustarten. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|