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

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

1

09.09.2007, 16:38

Fehler beim zeichnen eines Dreiecks

Hi Leute,
Ich hab da mal ein kleines Problem(schon wieder :evil: ). Wenn ich mit Direct3D ein Dreieck zeichnen will, bleibt das Fenster leer. Als ich nach tagelangem herumprobieren den Fehler nicht finden konnte habe ich alle Abschnitte des Codes mit einer Logfile protokolliert, aber alle Funktionen von Direct3D liefern einen Erfolgscode zurück und weder der Compiler noch der Debugger meckern. Aber das fenster bleibt LEER!!!!!!!! :evil: Das einzige was funktioniert ist das Leeren des Bildbuffers und so habe ich ein hübches kleines schwarzes LEERES Fenster! :evil: ! :evil: !!!
Hier der für das Problem relevante Code:

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
47
48
49
50
// RenderGame

// Spielzustand zeichnen

HRESULT CGame::RenderGame(float fTime)
{
    HRESULT     hResult;

    if(FAILED(hResult = g_pd3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,100), 0, 0)))
    {
        // Leeren des Bildpuffers fehlgeschlagen

        
        // Neue Logfileüberschrift

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

        g_pLogfile->fTextout(RED, "Leeren der Puffer fehlgeschlagen. HRESUT: %h", hResult);
        ExitD3D();
        return E_FAIL;
    }

    // Szene beginnen

    if(SUCCEEDED(g_pd3ddev->BeginScene()))
    {
        g_pd3ddev->SetStreamSource(0, g_pTrianglevertex, 0, sizeof(CUSTOMVERTEX));
        g_pd3ddev->SetFVF(D3DFVF_VERTEX_A);
        g_pd3ddev->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 1 );

        // Szene beenden

        g_pd3ddev->EndScene();
    }
    else
    {
        // Fehler beim beginnen der Szene

        g_pLogfile->WriteTopic("RenderGame", 2);
        g_pLogfile->Textout(RED, "Fehler beim Beginnen der Szene");
        ExitD3D();
        return E_FAIL;
    }

    // Bildpuffer sichtbar machen

    if(FAILED(g_pd3ddev->Present(NULL, NULL, NULL, NULL)))
    {
        g_pLogfile->WriteTopic("RenderGame", 2);
        g_pLogfile->Textout(RED, "Fehler biem sichtbarmachen des Bildbuffers");
    }
    else
    {
        g_pLogfile->Textout(GREEN, "Erfolgreiches sichtbarmachen des Bildbuffers");
    }
    
    return NOERROR;
}
Hat jemand eine Idee woran das liegen könnte?

2

09.09.2007, 17:19

Renderst du im Uhrzeigersinn (D3DRS_CULLMODE CW) ? Dann probiers mal umgekehrt (D3DRS_CULLMODE CCW).
Ggf Licht abschalten (D3DRS_LIGHTING, FALSE), Alphablending und ZBuffer aus...
fka tm

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

3

09.09.2007, 21:49

weltmatrix richtig gesetzt?
vertices haben farbe != schwarz?
"Don't trust your eyes: They are a hell of a lot smarter than you are"

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

4

09.09.2007, 22:24

Von mir käme dann auch noch der Vorschlag, nach der Projektions- und Kameramatrix zu schauen.
Ansonsten sind es vielleicht auch die Clippingebenen, die zu streng gesetzt wurden.

Mit freundlichen Grüßen,
WhiteMike

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

10.09.2007, 12:35

wie sieht deine vertex struktur aus und welches fvf verwendest du? wie erstellst du deine vertexbuffer und mit welchen werten füllst du sie?

GR-PA

Treue Seele

  • »GR-PA« ist der Autor dieses Themas

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

6

10.09.2007, 18:02

Clippingebenen sind sehr weit auseiander, Kameramatrix ist reichtig gesetzt(so das man das Dreieck eigentlich sehen könnte), beleuchtung, Culling und Z-Buffering sind aus. ich verwende D3DFVF_XYZ | D3DFVF_DIFFUSE.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

10.09.2007, 18:41

zeig ma deinen vertexbufferinhalt

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

10.09.2007, 21:50

Zitat von »"GR-PA"«

Clippingebenen sind sehr weit auseiander, Kameramatrix ist reichtig gesetzt(so das man das Dreieck eigentlich sehen könnte), beleuchtung, Culling und Z-Buffering sind aus. ich verwende D3DFVF_XYZ | D3DFVF_DIFFUSE.


heute hats bei uns nicht geregnet, gestern aber schon.

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

9

10.09.2007, 21:59

ich tipp ja immer noch auf die farbwerte der vertices, denn genau den gleichen fehler habe ich auch mal gemacht :>
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

11.09.2007, 10:15

Der Inhalt/der Code zum Befüllen des Buffers wären interessant. Die Rendermethode bringt egtl eher weniger.
@D13_Dreinig

Werbeanzeige