Sternenhimmel unter OpenGL



  • Hi! Ich programmier grad einen Weltraumshooter (mit Raumschiffen) und da dürfen natürlich auch die Sterne nicht fehlen.

    Also plaziere ich kleine Vierecke im Abstand von 90.0 um den Betrachter.
    Sieht auch gut aus. Nur ein Problem:

    Wenn jetzt ein anderes Objekt sich hinter 90 befindet fliegt es "hinter den Sternen".

    Das sieht dumm aus.

    Gibt es eine Möglichkeit die Sterne immer im Hintergrund anzuzeigen ohne, dass ich die Sichtweite auf 90 Beschränken oder die Sterne weiter nach hinten setzten muss.
    (Das weiter nach hinten setzten hab ich schon probiert. Dann fangen Sie aber bei niedrigen Auflösungen bei Bewegung an zu flackern.)

    Jemand ne Ahnung ob und wie das geht?

    Mfg
    NewUser



  • öhm, ohne groß ahnung zu haben würde ich mal auf den ZBuffer tippen...



  • Painter Algorithmus.

    Zuerst die Sterne zeichnen, dann alles andere.



  • Warum nicht einfach im Hintergrund Pixel setzen?!?



  • SeppSchrot schrieb:

    Painter Algorithmus.

    Zuerst die Sterne zeichnen, dann alles andere.

    Trotzdem muss dann der Z-Buffer umgangen werden, denn der sorgt ja gerade dafür, das die Tiefendarstellung unabhängig von der Zeichenreihenflge ist.

    Bye, TGGC (Ein Jahr Helden)



  • Hi!

    Frage:

    Wie umgeht man den Z-Buffer? 😕



  • hab da wirklich nicht viel ahnung, aber aus etwas rumspielerei mit direct3d kenne ich, dass man den ZBuffer erst abschaltet, dann zeichnet, dann wieder anschaltet und dann alles was davor ist zeichnet (oder umgekehrt?)



  • mir fällt da spontan nicht der namer der aufrufe ein aber das sollte der richtige weg sein, abschalten zng. einschalten, so geht das mit fast allem (licht, farbe...) da würd ich mal suchen gehen...



  • .. warte mal, da kommt mir noch ne idee...

    ist es nicht so, das nach dem NORMIEREN aller vektoren die maximale entfernung 1.0 bzw. -1.0 ist ? setz die sterne doch da hin, weiter draußen gibt es nix oder lieg ich da völlig falsch ?



  • OnlyMicha schrieb:

    ist es nicht so, das nach dem NORMIEREN aller vektoren die maximale entfernung 1.0 bzw. -1.0 ist ? setz die sterne doch da hin, weiter draußen gibt es nix oder lieg ich da völlig falsch ?

    Es heisst zwar nicht normieren, und der Bereich ist 0-1, aber sonst korrekt.

    Bye, TGGC (Keine Macht den Dummen)



  • TGGC schrieb:

    Es heisst zwar nicht normieren, und der Bereich ist 0-1, aber sonst korrekt.

    Und damit wir noch was lernen: Es heißt Homogeneous Division



  • wobei aber im aufruf

    glEnable(GL.NORMALIZE)

    und nicht glEnable(GL.HOMOGENDIVISION)

    steht 😉 aber egal, will mich darüber nich streiten, lieber mehrere bezeichnungen für ein und das selbe haben und außerdem weiß ja jeder bescheid was gemeint ist...


Anmelden zum Antworten