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

25.10.2004, 14:02

Updates zum Buch (2. Auflage !)

Dieser Thread ist "provisorisches" Update der 2ten Auflage.

1. (Kapitel 2: Auflistung aller Adapter)

In Listing 2.51 auf Seite 112 wurde ein "!" vergessen.
Also sollte es:

C-/C++-Quelltext

1
2
3
4
if(!pD3D)
{
//code

}


lauten. (gefunden von hanse)

cu Linux

Anonymous

unregistriert

2

29.10.2004, 19:26

Hier ein verlaufenes Posting von Dave *g*

die funktion zum laden von 3ds-materialien aus einer .3ds datei dursucht die datei bis ans ende, falls ein bestimmer material-chunk nicht gefunden wird, wodurch alles nachfolgende in der datei nicht mehr geladen wird.
näheres dazu hier: https://www.spieleprogrammierer.de/index…&start=15#22050

---2---

momentan bin ich mir nicht ganz sicher, obs hier nur um das buch von heiko geht. ich bezog mich auf das von david *g*
in seinem buch ist eigentlich nichts falsch. der model-converter wird auf seite 338 erwähnt, woran ja auch nichts geändert werden müsste...
allerdings ist im code des converters, bzw. eigentlich in der "3ds-model-laden-funktion" der tribase, welcher im buch ja nicht abgebildet ist ein fehler. s.o. ^^

durch meine änderungen läd er meine materialien zwar noch nicht korrekt, erkennt aber wenigstens die restlichen objekte, lichter, usw...
werde mich wohl nochmal etwas damit beschäftigen müssen *g*

[[nicht bearbeitet @ David]]

Goergi

Frischling

Beiträge: 85

Wohnort: NÖ

  • Private Nachricht senden

3

20.01.2005, 22:05

Der Quellcode von Game.ccp von Galactica muss, wenn mit #define _3D_GLASSES_ kompiliert wird, wiefolgt lauten:

[dies ist nur ein ausschnitt mit den relevanten änderungen!]

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// Rendert den Spielzustand

tbResult CGame::Render(float fTime)
{
    D3DLIGHT9   SunLight;
    char        acText[256];
    tbDirect3D& D3D = tbDirect3D::Instance();


#ifdef _3D_GLASSES_
    D3D->Clear(0, NULL, D3DCLEAR_TARGET, tbColor(0.0f), 1.0f, 0);

    for(int i = 0; i < 2; i++)
    {
        // Puffer leeren und Szene beginnen

        D3D->Clear(0, NULL, D3DCLEAR_ZBUFFER, tbColor(0.0f), 1.0f, 0);
        D3D->BeginScene();

        if(i == 0) D3D.SetRS(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_BLUE);
        else D3D.SetRS(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_RED);

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


        // Kamera setzen

        SetupCamera();

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


        // Sonnenrichtungslicht (von links) erstellen

        ZeroMemory(&SunLight, sizeof(D3DLIGHT9));
        SunLight.Type = D3DLIGHT_DIRECTIONAL;
        SunLight.Diffuse = tbColor(1.0f, 0.75f, 0.5f);
        SunLight.Ambient = tbColor(0.25f, 0.25f, 0.25f);
        SunLight.Specular = tbColor(0.5f, 0.5f, 0.5f);
        SunLight.Direction = tbVector3(1.0f, 0.0f, 0.0f);
        D3D->SetLight(0, &SunLight);
        D3D->LightEnable(0, TRUE);

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


        if(m_pSkyBox != NULL)
        {
            // Sky-Box rendern

            m_pSkyBox->Render(m_vCameraPos);
        }

        // Nebel einstellen (damit weit entfernte Objekte dunkler werden, bevor sie aus

        // dem Sichtbereich geraten)

        D3D.SetRS(D3DRS_FOGENABLE, TRUE);
        D3D.SetRS(D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);
        D3D.SetRS(D3DRS_FOGCOLOR, tbColor(0.0f, 0.0f, 0.0f));
        D3D.SetRSF(D3DRS_FOGSTART, 4000.0f);
        D3D.SetRSF(D3DRS_FOGEND, 5000.0f);

        // Schiffe und Projektile rendern

        RenderShips(fTime);
        RenderProjectiles(fTime);

        // "Sternenfeld" rendern

        RenderStarfield(fTime);

        // Partikel und Sprites rendern

        if(!m_bPaused)
        {
            m_pPSystem->AddToSpriteEngine(m_pSprites);
            m_pSprites->End();
        }
        m_pSpritesEffect->Begin();
        m_pSpritesEffect->Pass(0);
        D3D.SetTransform(D3DTS_WORLD, tbMatrixIdentity());
        m_pSprites->Render();
        m_pSpritesEffect->End();

        // Nebel wieder ausschalten

        D3D.SetRS(D3DRS_FOGENABLE, FALSE);

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


        // Eventuell Cockpit und Anzeigen rendern

        if(m_CameraMode == CM_COCKPIT) RenderCockpit(fTime);

        if(m_pSkyBox != NULL)
        {
            // Blenden der Sonne rendern

            RenderSunFlares(fTime);
        }

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


        g_pGalactica->m_pFont1->Begin();

        // Name des Kameramodus anzeigen

        g_pGalactica->m_pFont1->DrawText(tbVector2(10.0f, 10.0f), m_apcCameraMode[m_CameraMode]);

        if(m_bPaused)
        {
            // "Pause"-Text anzeigen

            g_pGalactica->m_pFont1->DrawText(tbVector2(0.5f, 0.5f), "[ P A U S E ]",
                                             TB_FF_ALIGN_HCENTER | TB_FF_ALIGN_VCENTER |
                                             TB_FF_RELATIVE | TB_FF_RELATIVESCALING);
        }

        if(g_pbButtons[TB_KEY_F])
        {
            // Framerate anzeigen

            sprintf(acText, "FPS: %.2f", 1.0f / fTime);
            g_pGalactica->m_pFont1->DrawText(tbVector2(10.0f, 30.0f), acText);
        }

        g_pGalactica->m_pFont1->End();

        // Szene beenden

        D3D->EndScene();
    }
#else
    // Puffer leeren und Szene beginnen

    D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor(0.0f), 1.0f, 0);
    D3D->BeginScene();

4

30.01.2005, 13:12

im buch 2te auflage ist ein fehler auf seite 33 listing 1.14.
es muss dort

if(pFile1->Init("Datei.dat@ZIPArchiv.zip"))

heissen, nicht pFile...

mfg

Goergi

Frischling

Beiträge: 85

Wohnort: NÖ

  • Private Nachricht senden

5

13.02.2005, 00:11

noch ein kleiner fehler:

auf seite 253 im listing 2.101 lautet der 1. kommentar:
// Das Stencil-Buffer-Prinzip ohne Bitmasken

es müsste hier logischerweise ... mit Bitmasken heißen
---
stellt euch eine welt ohne copy & paste vor...
Get Firefox!!!
http://www.mozilla.com

6

24.02.2005, 00:08

S.182 kleiner tipfehler, im absatz "Drehung, Bewegung und Zoom berechnen" des Kapitels 2.7.4.3 in der vierten Zeile steht "GetAsyncKeySate", das t bei State fehlt...

C++Amateur

Frischling

Beiträge: 50

Wohnort: irgendwo in der Milchstraße

Beruf: Schüler

  • Private Nachricht senden

7

31.03.2005, 18:23

Und auf Seite 73, in dem Text ganz oben:
"Die folgende Gleichung zeigt die allgemeine Skalierungsmatrix, welche einen Vektor p k9t dem Skalierungsvektor s skaliert(dieser beinhaltet die Skalierung auf jeder Achse)"
Was soll denn k9t heißen?

8

01.04.2005, 08:42

Ich denke mal, das "k9t" soll "mit" heißen.
Die Taste [9] ist in der Nähe von , das [k] ist überm [m] und das [t] stimmt so. :huhu: :huhu: :huhu:
Außerdem ergibts sonst keinen Sinn...

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

9

01.04.2005, 11:22

"mit"

Ja heißt das "mit".
Wie FOGX schon richtig gesagt hat, ist das mit den Tasten schon richtig.

k9t würde ja keinen Sinn ergeben, "mit" ergibt aber Sinn an dieser Stelle.
mfg
john

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

10

01.04.2005, 11:51

Ich meine Rechtschreibfehler sind keine Schande und ich bin kein schon gar kein Rechtschreibkönig, aber statt mit k9t einzugeben ....
Vielleicht war er betrunken oder ähnliches 8)

Werbeanzeige