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

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

1

18.08.2003, 21:59

present geht in die hecken

hier der init, eigentlich alles streng nach buch :) halt auf "meine" engine angepasst

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
seResult InitScene() {

    if(SE_FAILED(seDirect3D::SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE)))
        return SE_ERROR;
    seDirect3D::SetRS(D3DRS_LIGHTING,FALSE);
    seDirect3D::SetRS(D3DRS_CULLMODE,D3DCULL_NONE);
    seDirect3D::SetRS(D3DRS_DITHERENABLE,TRUE);


    float fAspect;
    seMatrix mProjection;

    fAspect =   1024.0f / 768.0f;

    mProjection = tbMatrixProjection(SE_DEG_TO_RAD(90.0f),                       fAspect,                                    0.1f,                                   100.0f);

    seDirect3D::GetDevice()->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)(&mProjection));

    //dreieck
    g_aVertexArray[0].vPosition = seVector3(0.0f, 1.0f, 0.0f);
    g_aVertexArray[1].vPosition = seVector3(1.0f, -1.0f, 0.0f);
    g_aVertexArray[2].vPosition = seVector3(-1.0f, -1.0f, 0.0f);
    g_aVertexArray[0].dwColor   = (DWORD)(seColor(1.0f, 0.0f, 0.0f));
    g_aVertexArray[1].dwColor   = (DWORD)(seColor(0.0f, 1.0f, 0.0f));
    g_aVertexArray[2].dwColor   = (DWORD)(seColor(0.0f, 0.0f, 1.0f));


    seAddInfoLog("Init Scene");
    return SE_OK;
}


dann das gerendere

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    mRotation = tbMatrixRotationY(SE_DEG_TO_RAD(90.0f));
    mTranslation = tbMatrixTranslation(seVector3(0.0f,0.0f,2.0f));

    mWorld = mRotation * mTranslation;

    seDirect3D::GetDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)(&mWorld));

    seDirect3D::Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,63),1.0f,0));

    seDirect3D::BeginScene();
    seDirect3D::GetDevice()->DrawPrimitiveUP(           D3DPT_TRIANGLELIST,
        1,
        g_aVertexArray,
        sizeof(Vertex));
    seDirect3D::EndScene();


    if(FAILED(seDirect3D::GetDevice()->Present(NULL, NULL, NULL, NULL))) {
        seAddErrorLog("Present failed");
        return SE_ERROR;
    }


tja und das present hauts mir um die ohren... ???
kann mir wer helfen? braucht ihr noch mehr code?

=> also für einen bruchteil einer micro milli nano sekunde seh ich das dreieck :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.08.2003, 22:24

Hmmm... ich würde das BeginScene direkt nach dem Clear-Aufruf setzen. Vielleicht hilft das.

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

3

18.08.2003, 23:16

hab den fehler:

mRotation = tbMatrixRotationY(TB_DEG_TO_RAD(g_fTime * 90.0f));

ersetzt mit

if(g_fDegree>300.0f) g_fDegree=1.0f;
else g_fDegree+=0.1f;

mRotation = tbMatrixRotationY(g_fDegree);

dann dreht sich das ganze, ist nur die frage warum *hm*

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

4

18.08.2003, 23:19

vielleicht peinlich, aber wie kann ich g_fTime ins log schreiben? ich krieg da immer 1.0#INF, würd mich interessieren was da drin steht in der variablen

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

18.08.2003, 23:31

tbWriteToLog("%.2f", g_fTime);

Könnte es sein, dass Du der Variablen g_fTime am Anfang keinen Wert zuweist? Dann ist der Wert nämlich undefiniert und höchstwahrscheinlich ungültig! Setze ihn am Anfang = 0.0f.

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

6

19.08.2003, 00:12

egal wie ichs mach, einmal kommt 0.00000 raus, alles weitere ist immer 1.#INF00

das steht in meiner main header datei
extern float g_fTime;

in der main cpp
float g_fTime = 0.0f;

die render methode ist dabei in einer eigenen cpp, aber daran kanns ja nicht liegen. hm, maybe kriegt die move methode nen falschen wert? da einfach float fNumSecsPassed falsch ist? ???

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

19.08.2003, 00:16

Erhöhst Du denn überhaupt irgendwo die g_fTime-Variable? Lass Dir doch einfach die Werte von fNumSecsPassed ausgeben - mit tbWriteToLog. Nimm dann aber "%.4f", da 2 Kommastellen womöglich nicht reichen, da die Zahl so klein ist.

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

8

19.08.2003, 19:03

nach 50 milliarden logfiles hab ich jetzt den fehler gefunden 8)

die übeltäterzeile

Quellcode

1
dTime = (float)(llEndTime - llStartTime) / se_g_dFrequency


hab wie in der tribase.cpp folgendes deklariert:

Quellcode

1
double  tb_g_dFrequency = 0.0;  // Frequenz des Zeitgebers (double)


durch 0 teilen ist doof :)
da geht dann alles in die hecken. bei 0.1 klappts, dreht sich zwar äußerst hässlich und ziemlich schnell, aber es dreht sich
nur wie muß der faktor richtig sein?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

19.08.2003, 19:46

In der TriBase wird aber auch die korrekte Frequenz abgefragt!
Schau mal in tbDoMessageLoop. Die Variable wird am Anfang nur auf null gesetzt, weil es sich eigentlich so gehört ;)

eric_sun

Frischling

  • »eric_sun« ist der Autor dieses Themas

Beiträge: 17

Wohnort: ulm

  • Private Nachricht senden

10

19.08.2003, 20:03

oje das schmerzt, im endeffekt hatte nur das else for der zeile gefehlt :crying:
naja lehrgeld bezahlt...
danke für deine mühe :) ab jetzt kommen keine solchen pipifax fragen mehr 8)

Werbeanzeige