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

Anonymous

unregistriert

1

06.03.2004, 13:40

Was mach ich falsch?

Hi,

ich hab grad mal was Angefangen, aber es funktioniert nicht einmal mit einem einfachen Dreieck. ??? Ich hab absolut keine Ahnung woran es liegen könnte. Warscheinlich was ganz einfaches ;) , das ich vergessen habe. Vielleich kann mir ja einer helfen:

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
tbResult Game::Init()
{
    tbDirect3D::SetRS(D3DRS_LIGHTING, FALSE);
    tbDirect3D::SetRS(D3DRS_CULLMODE, D3DCULL_NONE);

    tbDirect3D::SetTransform(D3DTS_PROJECTION, tbMatrixProjection(TB_DEG_TO_RAD(85.0f),
                                                        4.0f / 3.0f, 0.1f, 100.0f));
    tbDirect3D::SetTransform(D3DTS_VIEW, tbMatrixCamera(tbVector3(0.0f, 2.0f, 0.0f),
                                                        tbVector3(0.0f, 0.0f, 0.0f)));
    tbDirect3D::SetTransform(D3DTS_WORLD, tbMatrixIdentity());

    triangle[0].position = tbVector3(0.0f, 0.0f, 0.0f); triangle[0].texture = tbVector2(0.0f, 0.0f);
    triangle[1].position = tbVector3(1.0f, 0.0f, 0.0f); triangle[1].texture = tbVector2(1.0f, 0.0f);
    triangle[2].position = tbVector3(1.0f, 0.0f, 1.0f); triangle[2].texture = tbVector2(1.0f, 1.0f);

    return TB_OK;
}

tbResult Game::Render(float time)
{
    tbDirect3D::Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 63),
                      1.0f, 0);

    tbDirect3D::BeginScene();

    tbDirect3D::SetFVF(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1);
    tbDirect3D::SetTexture(0, tbTextureManager::GetTexture("Gfx\\texture.bmp"));
    tbDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, triangle, sizeof(StdVertex));

    tbDirect3D::EndScene();

    tbDirect3D::Present();

    return TB_OK;
}


Zu sehen ist bloß ein leerer blauer Bildschirm.

2

06.03.2004, 15:09

Stell mal den Cull Mode auf None.

Quellcode

1
IDirect3DDevice9::SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

Und stell die Position deiner Kamera auf (0.0f, 2.0f, -5.0f).

Dann solltest du dein Dreick sehen. Es sollte sich über das rechte obere viertel erstrecken.

Die Standardeinstellung für den Culling Mode ist Counter Clock Wise (Gegen den Uhrzeigersinn).
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

3

06.03.2004, 19:23

Aha! Problem gefunden:
Steht die Kamera auf tbVector3(0.0f, 2.0f, 0.0f), ist gar nichts zu sehen. Steht sie stattdessen auf tbVector3(0.0f, 2.0f, 0.001f), so ist das Dreieck in aller Pracht zu erkennen. ???
Das Problem entsteht wohl beim Erstellen der Sichtmatrix.

Zitat


Stell mal den Cull Mode auf None.

Quellcode

1
IDirect3DDevice9::SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

Die Standardeinstellung für den Culling Mode ist Counter Clock Wise (Gegen den Uhrzeigersinn).

Was ist denn das: ;D

Quellcode

1
tbDirect3D::SetRS(D3DRS_CULLMODE, D3DCULL_NONE);


Naja, Problem erkannt, Problem gebannt.

Vielen Dank an DragonMaster.

cu

Werbeanzeige