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

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

11

11.09.2007, 16:25

@David: meine Rede :D

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

12

11.09.2007, 16:42

Hier der Code zum füllen und erstellen des Vertexbuffers:

C-/C++-Quelltext

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
45
46
void CGame::InitVertexbuffer()
{
    // Neue Logfileüberschrift

    g_pLogfile->WriteTopic  ("InitVertexbuffer", 2);

    if(FAILED(g_pd3ddev->CreateVertexBuffer(3 * sizeof(CUSTOMVERTEX),
                                            0,
                                            D3DFVF_XYZ | D3DFVF_DIFFUSE,
                                            D3DPOOL_MANAGED,
                                            &g_pTrianglevertex,
                                            NULL)))
    {
        // Fehler beim erstellen des Vertexbuffers

        g_pLogfile->Textout     (RED, "Vertexbuffer konnte nicht erstellt werden");
    }

    // Dreieck initialisieren

    CUSTOMVERTEX m_gaTriangle1[] = 
    {
        { -1.0f,-1.0f, 0.0f, D3DCOLOR_XRGB(255,0,0), },
        {  1.0f,-1.0f, 0.0f, D3DCOLOR_XRGB(255,0,0), },
        {  0.0f, 1.0f, 0.0f, D3DCOLOR_XRGB(255,0,0), },
    };
    
    g_pLogfile->Textout(BLUE, "Dreieck wurde initialisiert");

    // Vertexbuffer sperren

    VOID *pVertices;
    if(FAILED(g_pTrianglevertex->Lock(0,sizeof(m_gaTriangle1), (void**)&pVertices, 0)))
    {
        // Sperren des Vertexbuffers fehlgeschlagen

        g_pLogfile->Textout(RED, "Fehler beim Sperren des Vertexbuffers");
    }
    else
    {
        // Sperren des Vertexbuffers fehlgeschlagen

        g_pLogfile->Textout(GREEN, "Erfolgreiches Sperren des Vertexbuffers");
    }

    // Vertexbuffer füllen

    memcpy(pVertices, m_gaTriangle1, sizeof(m_gaTriangle1));
    
    // Vertexbuffer entsperren

    g_pTrianglevertex->Unlock();

}

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

13

11.09.2007, 16:49

und welche Matricen hast du gesetzt? Weil per Einheitsmatrix sitzt du genau in dem Dreieck ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

14

11.09.2007, 16:56

Hier der Code zum setzen der Matrizen

C-/C++-Quelltext

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
void CGame::SetupMatrizes(float fTime)
{
    float           fAspect ;
    D3DXMATRIX      matRot  ;
    D3DXMATRIXA16   matProj ;
    D3DXMATRIXA16   matWorld;

    // Rotationsmatrix erzeugen

    D3DXMatrixRotationY(&matRot, ToRadian(fTime * 45.0f));

    // Als Weltmatrix einsetzen

    g_pd3ddev->SetTransform(D3DTS_WORLD, &matWorld);

    //Viewmatrix erstellen

    D3DXVECTOR3 vEyePt( 0.0f, 0.0f,-5.0f );     // Position der kamera

    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );  // Vektor für die Kamerarichtung

    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );     // Weltausrichtung

    D3DXMATRIXA16 matView;
    D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);

    // Viewmatrix setzen

    g_pd3ddev->SetTransform(D3DTS_VIEW, &matView);

    // Projektionsmatrix erstellen

    fAspect = (float)(P_Parms.BackBufferWidth) / (float)(P_Parms.BackBufferHeight);
    D3DXMatrixPerspectiveFovLH(&matProj, ToRadian(90.0f), fAspect, 0.1f, 100.0f);

    // Projektionsmatrix setzen

    g_pd3ddev->SetTransform(D3DTS_PROJECTION, &matProj);

    g_pLogfile->WriteTopic("Setupmatrizes", 2);
    g_pLogfile->Textout(BLUE, "Matrizen gesetzt");
}

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

15

11.09.2007, 17:16

mir fällt auf den ersten blick das auf:

Zitat von »"GR-PA"«


C-/C++-Quelltext

1
2
3
4
5
6
7
    D3DXMATRIXA16    matWorld;

    // Rotationsmatrix erzeugen

    D3DXMatrixRotationY(&matRot, ToRadian(fTime * 45.0f));

    // Als Weltmatrix einsetzen

    g_pd3ddev->SetTransform(D3DTS_WORLD, &matWorld); 


du berechnest zwar matRot, setzt jedoch matWorld als Weltmatrix.

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

16

11.09.2007, 17:44

ich habe den fehler behoben und das programm läuft jetzt.
:D :D :D

17

11.09.2007, 18:55

Das ist schön für dich!
Und wir dürfen weiterrätseln, woran es gelegen hat? :evil:
fka tm

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

18

11.09.2007, 19:06

Zitat von »"TrikkieMikkie"«

Das ist schön für dich!
Und wir dürfen weiterrätseln, woran es gelegen hat? :evil:


lies mal meinen vorherigen post, ich gehe mal davon aus, dass das den fehler behoben hat. falls nicht, schliesse ich mich dir an.

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

19

11.09.2007, 19:18

Lag daran, das ich eine leere Matrix als Weltmatrix gesetzt habe.

20

11.09.2007, 19:26

@TheWinner: Ja hattest recht (Winner!), ich hab die letzten Posts übersehen und bin ohne über Los zu gehen gleich zu Seite 2 :roll:
fka tm

Werbeanzeige