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

09.11.2003, 15:56

DrawPrimitiveUP

Hallo,

Mein Puls ist auf 180. Ich sitze jetzt schon Stunden vor der Flimmerkiste und kriege die einfachsten Dinge nicht hin.

Ich möchte zum Test ein paar Striche am Rand meines Modells "malen". Wenn ich dies versuche, springt mein Spiel zurück in den Desktop oder stürtzt ganz ab. Wenn ich nun das Spiel neustarte kommt der Fehler INVALID_CALL beim erstellen des DirectX9-Devices.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//Header:
struct SLineVertex
{
    tbVector3 vPosition;
    tbColor cColor;
};
SLineVertex LineVertex[3];

// Render:
    // Spieler rendern
    for(int i = 0; i <m_pPlayers.size(); i++)
    {
        // Ist es sichtbar?
        //if(m_pPlayers[i].IsVisible())
        //{
            // Ist es der eigene Spieler und ist der Kamera-Modus die Spieler-Kamera?
            if(m_CameraMode==CM_PLAYER)
            {
                if(i!=m_iThisPlayer)
                {
                    // Rendern!
                    //m_pPlayers[i].Render(fTime);
                }
            }
            else 
            {
                // Rendern!
                //m_pPlayers[i].Render(fTime);
            }

            LineVertex[0].vPosition=tbVector3(m_pPlayers[i].m_vOldPosition.x+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().x, m_pPlayers[i].m_vOldPosition.y+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().y, m_pPlayers[i].m_vOldPosition.z+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().z);             
            LineVertex[1].vPosition=tbVector3(m_pPlayers[i].GetPosition().x+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().x, m_pPlayers[i].GetPosition().y+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().y, m_pPlayers[i].GetPosition().z+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMin().z);
            LineVertex[2].vPosition=tbVector3(m_pPlayers[i].m_vOldPosition.x+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().x, m_pPlayers[i].m_vOldPosition.y+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().y, m_pPlayers[i].m_vOldPosition.z+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().z);
            LineVertex[3].vPosition=tbVector3(m_pPlayers[i].GetPosition().x+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().x, m_pPlayers[i].GetPosition().y+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().y, m_pPlayers[i].GetPosition().z+m_pPlayers[i].m_pType->m_pModel->GetBoundingBoxMax().z);

            LineVertex[0].cColor=tbColor(1.0f,0.0f,1.0f);
            LineVertex[1].cColor=tbColor(1.0f,0.0f,1.0f);
            LineVertex[2].cColor=tbColor(1.0f,0.0f,1.0f);
            LineVertex[3].cColor=tbColor(1.0f,0.0f,1.0f);
            tbDirect3D::SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);
            tbDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_LINELIST,4,LineVertex,sizeof(SLineVertex));

        //}
    }


Hoffe jemand hilft mir,

danke,

Chrissi

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

09.11.2003, 16:27

Re: DrawPrimitiveUP

Zitat von »"chrissi"«

DrawPrimitiveUP(D3DPT_LINELIST,4,LineVertex,sizeof(SLineVertex));

Du willst 4 Linien zeichnen, dafür brauchst Du aber 8 Vertizes, nicht 4. Willst Du vielleicht D3DPT_LINESTRIP verwenden? Dann bräuchtest Du für 4 Linien aber 5 Vertizes.

3

10.11.2003, 12:47

Hi

dar wäre ein Fehler. Aber daran liegt es nicht. Das Spiel stürzt immer noch ab. Ist aber auch nicht so wichtig. Was ich eigentlich machen wollte, dass ich "nur" aus Linien die vertikale Boundingbox zeichnen wollte. Also insgesamt 8 Punkte, 4 Linien. Aber die Punkte kriege ich sicher auch so raus. Aber trotzdem nervt es mich, dass ich die einfachsten Dinge nicht hinkriege. Ich glaube, ich sollte doch bei der 2D-Spieleprohgrammierung bleiben. Naja. In dieses Projekt habe ich jetzt schon so viel Zeit inverstiert, und das mache ich jetzt nich zuende, koste es was es wolle.

Cu,

Chrissi

4

11.11.2003, 15:19

Wo ist eigentlich die Boundingbox-Min und die BoundingBoxMax? Und wie wirken sich die auf die Koordinaten aus (Wo ist beim Modell x,y,z)? BZW. Welche Koordinaten haben die Vier Eckpunkte eines Modelles, wenn ich die beiden BoundingBox-Vektoren habe?

5

13.11.2003, 15:00

Wirklich keine Idee??? Meine Idee sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
    Hinten Unten Rechts: tbVector3(GetBoundingBoxMax.x, GetBoundingBoxMin().y, GetBoundingBoxMin().z);
    Hinten Unten Links: GetBoundingBoxMin();
    Hinten Oben Links: tbVector3(GetBoundingBoxMin().x, GetBoundingBoxMax().y, GetBoundingBoxMin().z);
    Hinten Oben Rechts: tbVector3(GetBoundingBoxMax().x, GetBoundingBoxMax().y, GetBoundingBoxMin().z);
    Vorne Oben Rechts: GetBoundingBoxMax();
    Vorne Oben Links: tbVector3(GetBoundingBoxMin().x, GetBoundingBoxMax().y, GetBoundingBoxMax().z);
    Vorne Unten Links: tbVector3(GetBoundingBoxMin().x, GetBoundingBoxMin().y, GetBoundingBoxMax().z);
    Vorne Unten Rechts: tbVector3(GetBoundingBoxMax().x, GetBoundingBoxMin().y, GetBoundingBoxMax().z);


Leider kann ich ja die Vektoren nicht nachprüfen (oder vielleicht doch?!)

danke,

Chrissi

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

13.11.2003, 16:03

Müsste aber eigentlich stimmen...

Werbeanzeige