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

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

21

17.04.2012, 16:41

Okay ich habe nun alle Fehler ausgemerzt.. und ich kann das SPiel auch kompilieren.. und nun zeigt er mir das Terrain nicht an .....
Hintergrund ist schwarz, Kamera schaut von oben auf den Ball..

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
// Rendert den Spielzustand
tbResult CGame::Render(float fTime)
{
    tbMatrix    mCamera;
    tbMatrix    mProjection;
    tbVector3   vCameraPos;
    tbVector3   vCameraLookAt;
    D3DLIGHT9   CamLight;
    float       y;

    // Puffer leeren und Szene beginnen
    tbDirect3D& D3D = tbDirect3D::Instance();
    D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor(0.0f, 0.0f, 0.0f), 1.0f, 0);
    D3D->BeginScene();

    // ----------------------------------------------------------------

    // Die Kameraposition:
    vCameraPos.x = Ball.GetAbsPosition().x + 10.0f*sinf(relativeCamera.x);
    vCameraPos.y = Ball.GetAbsPosition().y + relativeCamera.y;
    vCameraPos.z = Ball.GetAbsPosition().z + 10.0f*cosf(relativeCamera.z);

    // Fokus der Kamera auf den Ball
    vCameraLookAt = Ball.GetAbsPosition();

    // Kameramatrix erstellen und aktivieren
    mCamera = tbMatrixCamera(vCameraPos, vCameraLookAt);
    D3D.SetTransform(D3DTS_VIEW, mCamera);

    // Projektionsmatrix erstellen und aktivieren
    mProjection = tbMatrixProjection(TB_DEG_TO_RAD(70.0f),
                                    D3D.GetAspect(),
                                     0.1f, 500.0f);
    D3D.SetTransform(D3DTS_PROJECTION, mProjection);

    // ------------------------------------------------------------------

    // Richtungslicht mit der Richtung der Kamera erstellen und aktivieren
    ZeroMemory(&CamLight, sizeof(D3DLIGHT9));
    CamLight.Type = D3DLIGHT_DIRECTIONAL;
    CamLight.Diffuse = tbColor(1.0f, 1.0f, 1.0f);
    CamLight.Specular = tbColor(1.0f, 1.0f, 1.0f);
    CamLight.Direction = vCameraLookAt - vCameraPos;
    D3D->SetLight(0, &CamLight);
    D3D->LightEnable(0, TRUE);

    // Hintergrundbeleuchtung
    D3D.SetRS(D3DRS_AMBIENT, tbColor(1.0f, 1.0f, 1.0f));


das is für die KAmera..
Falls es hilft:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Jeden Vertex durchgehen
    tbResult UpdateTerrain()
    {
    STerrainVertex  Vertex;
    tbVector3       vPosition;
    int m_iResolution = 64;
    int m_isize = 200.0f;
    int m_fBitmap[40000];
    float fHeight;
    tbVertexBuffer*         m_vbTerrainVB;          
    tbIndexBuffer*          m_ibTerrainIB;
//  int iNumVertices;
    int iNumIndices;
    WORD wIndex;


als Information für die Größe des Terrains.
Vermutung: Die Kamera schaut vom Terrain weg.

FSA

Community-Fossil

  • Private Nachricht senden

22

17.04.2012, 17:37

Es wäre gut, wenn du uns den gesamten Render-Code geben könntest... Außerdem macht dein Licht wenig Sinn, wenn du Ambient Beleuchtung von1 hast, glaube ich zumindest ;)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

23

17.04.2012, 17:47

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Rendert den Spielzustand
    tbResult CGame::Render(float fTime)
    {
    tbMatrix    mCamera;
    tbMatrix    mProjection;
    tbVector3    vCameraPos;
    tbVector3    vCameraLookAt;
    D3DLIGHT9    CamLight;
    tbVector3    vPosition;
    float        y;

    // Puffer leeren und Szene beginnen
    tbDirect3D& D3D = tbDirect3D::Instance();
    D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor(0.0f, 0.0f, 0.0f), 1.0f, 0);
    D3D->BeginScene();

    // ----------------------------------------------------------------

    // Die Kameraposition:
    vCameraPos.x = Ball.GetAbsPosition().x + 10.0f*sinf(relativeCamera.x);
    vCameraPos.y = Ball.GetAbsPosition().y + relativeCamera.y;
    vCameraPos.z = Ball.GetAbsPosition().z + 10.0f*cosf(relativeCamera.z);

    // Fokus der Kamera auf den Ball
    vCameraLookAt = Ball.GetAbsPosition();

    // Kameramatrix erstellen und aktivieren
    mCamera = tbMatrixCamera(vCameraPos, vCameraLookAt);
    D3D.SetTransform(D3DTS_VIEW, mCamera);

    // Projektionsmatrix erstellen und aktivieren
    mProjection = tbMatrixProjection(TB_DEG_TO_RAD(70.0f),
                                D3D.GetAspect(),
                                  0.1f, 500.0f);
    D3D.SetTransform(D3DTS_PROJECTION, mProjection);

    // ------------------------------------------------------------------

    // Richtungslicht mit der Richtung der Kamera erstellen und aktivieren
    ZeroMemory(&CamLight, sizeof(D3DLIGHT9));
    CamLight.Type = D3DLIGHT_DIRECTIONAL;
    CamLight.Diffuse = tbColor(1.0f, 1.0f, 1.0f);
    CamLight.Specular = tbColor(1.0f, 1.0f, 1.0f);
    CamLight.Direction = vCameraLookAt - vCameraPos;
    D3D->SetLight(0, &CamLight);
    D3D->LightEnable(0, TRUE);

    // Hintergrundbeleuchtung
    D3D.SetRS(D3DRS_AMBIENT, tbColor(1.0f, 1.0f, 1.0f));

    // ------------------------------------------------------------------
    

    //--------------------------------------------------------------------

    // Höhe des Balls im Terrain ausrechnen
    //y = getHeightAtPosition(Ball.GetAbsPosition().x, Ball.GetAbsPosition().z);
    //Ball.m_vPosition.y = y;

    // Ball rendern
    Ball.Render(fTime);

    // ------------------------------------------------------------------
    

    // Wenn das Spiel pausiert, wird "Pause" in der Bildmitte angezeigt.
    if(m_bPaused)
    {
     g_pBreakanoid->m_pFont1->Begin();
     g_pBreakanoid->m_pFont1->DrawText(tbVector2(0.5f, 0.5f), "Pause",
                                    TB_FF_ALIGN_HCENTER | TB_FF_ALIGN_VCENTER | TB_FF_RELATIVE | TB_FF_RELATIVESCALING);
     g_pBreakanoid->m_pFont1->End();
    }

    // ------------------------------------------------------------------

    
    // -----------------------------------------------------------------------

    // Szene beenden
    D3D->EndScene();

    return TB_OK;
}


Was meinst du genau ?

FSA

Community-Fossil

  • Private Nachricht senden

24

18.04.2012, 15:48

Also ich weiß nicht ob ich doof bin, aber du renderst doch gar kein Terrain!

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige