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

adapto

Treue Seele

  • »adapto« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

1

27.07.2004, 01:21

starkes ruckeln

also ich hab bei mir ca 5000 sichtbare polys und wenn ich mich bewege fängt es jetzt schon an zu ruckeln. ich hab eine radeon 9500, das kann doch nicht normal sein oder? ich hab mal alles auf eine textur gesetzt und gezeichnet werden jetzt alle polys in einem zug.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

27.07.2004, 09:44

Nehmen diese Polygone jeweils einen großen Teil des Bildschirms an?
Zeichnest Du sie aus einem Vertex-/Index-Buffer heraus?
Falls ja, wie hast Du diese Buffer erstellt?
Was genau bedeutet "ruckeln"? Zahlen wären gut.

DrthM2001

Alter Hase

Beiträge: 721

Wohnort: Karlsruhe

  • Private Nachricht senden

3

27.07.2004, 11:18

Etwas Code wäre auch hilfrech. Wie siehts mit Culling aus? Und welche Auflösung hat die Textur? Auch überall die neuesten Treiber? Fängt es nur an zu ruckeln wenn du dich Bewegst und sonst ist die Framerate ok?

adapto

Treue Seele

  • »adapto« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

4

27.07.2004, 12:39

@david
ja ich hab einen grossen index und vertex buffer die ich mit D3DPOOL_MANAGED angelegt habe. die polygone sind komplett sichtbar auf dem bildschirm, aber es sind ja nur 5000.
fps ist bei ca 300 aber es ruckelt halt trotzdem.

@drthm2001
culling CCW. die textur ist 512x512 groß. es fängt nur an wenn ich mich bewege. sonst sieht es echt ok aus und wie gesagt die fps bleiben relativ stabil bei ca 300.

also ich hab die dll ins microsoft dx application framework eingebaut und rufe daraus halt meine funktionen in der dll auf. im moment habe ich tatsächlich die maussteuerung im visier. die wie folgt angelegt ist:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    float fMouseSpeed= 50.0f;

    Vector3 vCameraDir= Vector3(sinf(fCameraAngleY)*cosf(fCameraAngleX), sinf(fCameraAngleX), cosf(fCameraAngleY)*cosf(fCameraAngleX));
    //====================================================================

    // Bewegung berechnen

    if(pDirectInput->GetMouseState()) // Maus abfragen

    {
        if (pDirectInput->GetMouseMoveX()) fCameraAngleY+= DEG_TO_RAD(1.0f)*(pDirectInput->GetMouseMoveX()*fMouseSpeed)* fTime;
        if (pDirectInput->GetMouseMoveY()) fCameraAngleX-= DEG_TO_RAD(1.0f)*(pDirectInput->GetMouseMoveY()*fMouseSpeed)* fTime;

        if (fCameraAngleY>= DEG_TO_RAD(360.0f)) fCameraAngleY= DEG_TO_RAD(1.0f);
        if (fCameraAngleY<= DEG_TO_RAD(0.0f)) fCameraAngleY= DEG_TO_RAD(359.0f);
        if (fCameraAngleX>= DEG_TO_RAD(75.0f)) fCameraAngleX= DEG_TO_RAD(75.0f);
        if (fCameraAngleX<= DEG_TO_RAD(-45.0f)) fCameraAngleX= DEG_TO_RAD(-45.0f);

        // Tasten 0- 7 (0 linke, 1 recht, 2 mitte)

        if (pDirectInput->IsMouseButtonPressed(DIMOUSE_LEFTBUTTON)) Beep(100,100);
    }




vielen dank für eure hilfe.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

27.07.2004, 13:25

Zitat von »"adapto"«

C-/C++-Quelltext

1
2
        if (fCameraAngleY>= DEG_TO_RAD(360.0f)) fCameraAngleY= DEG_TO_RAD(1.0f);
        if (fCameraAngleY<= DEG_TO_RAD(0.0f)) fCameraAngleY= DEG_TO_RAD(359.0f);

Da stimmt was nicht. Er springt von 360° direkt auf 1°. Er sollte aber auf 0° springen. Mach's so: wenn Winkel > 360° dann Winkel = 0°, nicht mit >=!

adapto

Treue Seele

  • »adapto« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

27.07.2004, 13:53

hast recht, der überspringt sonst 1°. habs schon "gefixed".
aber das ruckeln tritt schon bei bewegungen von weniger als 10° auf.

also mit GetMouseState hole ich mir den aktuellen mouse state (pMouse->GetDeviceState(sizeof(MouseState), &MouseState)), so ähnlich wie du es auch machst und GetMouseMoveX ist eine inline funktion, die DIMOUSESTATE2 ausliest.
und fTime ist "m_fElapsedTime" von der DX timer funktion, aber das müsste ja stimmen.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

7

27.07.2004, 14:22

Quellcode

1
if (fCameraAngleY>= DEG_TO_RAD(360.0f)) fCameraAngleY= DEG_TO_RAD(1.0f);


Sollte sein:

Quellcode

1
while (fCameraAngleY> DEG_TO_RAD(360.0f)) fCameraAngleY-= DEG_TO_RAD(360.0f);


Dies bedeutet dass wenn Du z.B. 380 Grad bekommen würdest, Du statt dessen 20 bekommst. Das "While" fängt ganz extreme Fälle ab, in denen Du pro Frame um mehr als 360 Grad drehst - unwahrscheinlich dass das jemals passiert, aber Vorsicht ist die Mutter der Porzelan kiste und von Source Code erst recht ;).

Theoretisch könnte ich mir auch vorstellen, dass GetMouseMoveX zu grob ist. Was sind denn so typische Zahlen, die das zurückliefert? Wenns typisch 0 oder 1 ist, dann würde das die Vermutung bestätigen. Wenns zwischen 100 und 101 schwankt, wird man es sicher nicht sehen.

Schreib Dir auch mal die Zeiten pro Frame in eine Datei um zu sehen, ob einige wesentlich langsamer als die durchschnittlichen 300 Hertz sind.
"Games are algorithmic entertainment."

adapto

Treue Seele

  • »adapto« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

8

27.07.2004, 14:41

C-/C++-Quelltext

1
if (fCameraAngleY> DEG_TO_RAD(360.0f)) fCameraAngleY-= DEG_TO_RAD(360.0f);

ja gefällt mir noch besser. wede ich so einbauen.

du hast recht die werte liegen zwischen 0 und maximal +-20 bei wirklich schnellen bewegungen.

adapto

Treue Seele

  • »adapto« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

9

27.07.2004, 14:45

und fTime schwankt auch ziemlich stark:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Time: 0.016688
Time: 0.016626
Time: 0.019949
Time: 0.021747
Time: 0.016600
Time: 0.016780
Time: 0.036428
Time: 0.022016
Time: 0.019822
Time: 0.021676
Time: 0.016623
Time: 0.016626
Time: 0.016851
Time: 0.019866
Time: 0.013427
Time: 0.016495
Time: 0.016649
Time: 0.016823

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

27.07.2004, 14:51

Hmm also die zeiten sehen nicht schlecht aus... kannst du das programm hochladen?

Werbeanzeige