[OpenGL] Coverflow

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [OpenGL] Coverflow

    Hi

    Bei meinem versuch ein GL_QUAD zu zeichnen und ein textur drauf zu machen, und das quad auf der einen seite "schmaler/niedriger" zu machen, so das es wie 3D aussieht funktioniert nicht.
    Denn die Textu bekommt einen "Knick" schräg rüber.
    Wie löse ich das am besten?
    Ich will nicht "echt" in die tiefe gehen, das heist z soll 0.0 sein.

    Danke :)
  • Geht nicht. Ich konnte auch mal beweisen und erklären, warum. Wenn Du es wissen willst und Dich gedulden magst, überlege ich auch nochmal.

    edit
    Also entweder, Du gehts doch in die Tiefe; oder was auch klappen könnte, ist die Textur-koordinaten zu verschieben, also CLAMP_TO_BORDER und dann wenn du links kleiner sein willst, die texcoords mit (u, v+q) und (u, v-q) mit q als dein "wievielkleiner". Wenn ich mich an den Grund erinnern könnte, wüsste ich jetzt gleich, ob das klappt, ich hab aber grad soviele andere dinge im kopf.

    achja: grund-problem ist, dass texturen immer über dreiecke interpoliert werden.
    C++
  • das problem mit der tiefe: ich kenne mit OGL nicht so gut aus.
    Ich benutze GLOrtho, um meine 2D sachen darzustellen, nur wie wecksel ich zwischendurch in perspektive? geht das?
    mit gluPerspektive(0.0, width/heiht, 1.0, 10000.0) ändert gar nichts.
    Alles wie vorher.

    Danke
  • Soll ich Dir jetzt hier die Grundlagen von OpenGL erklären? :P

    Wenn Du einfach mal in die Doku schaust kannst Du zumindest mal nachschlagen, was gluPerspective für Parameter bekommt und was die bewirken. Ein fov von 0. ergibt bspw. gar kein Sinn ;)

    Was hast Du eigentlich vor? OpenGL kennenlernen wohl nicht?
    C++
  • Du willst in OpenGL einen Tiefeneffekt nachbauen ?? hä hä lustig, hat bestimmt auch noch keiner gemacht.
    Coverflow soll es sein?

    Also das Ganze ist vieeeeeel einfacher als du denkst. Zunächst mal mit Ortho wird das nix, du brauchst ja Perspektive,
    also

    Quellcode

    1. gluPerspective( 45.0, rect.size.width / rect.size.height, 1.0, 50.0 );


    Dann rotierst du Dein Quad auf der Y-Achse (so wie Coverflow das auch macht)

    Quellcode

    1. glRotatef(45.0, 0.0, 1.0, 0.0);

    Dann malst du ein Quad

    Quellcode

    1. glBegin(GL_QUADS);
    2. .
    3. .
    4. .
    5. glEnd();

    Und fertig ist das Ding. Die Rotation kannst du mit den Cursortasten (z.B.) ändern, je nachdem wo sich das Quad befindet ist der Wert für den Winkel in Rotatef größer oder kleiner (einfach mal testen, ist ganz einfach). Dann stapelst du mehrere dieser Quads nebeneinander und schon hast du so was wie Coverflow. Die Reflektion kannst du ganz billig nachbauen, in meinem Buch (Kapitel 5) hab ich ein Beispiel wie das geht. Lad dir doch mal die Sourcen wr-media.net/buch/ runter und spiel ein bischen damit, ist nicht schwer zu verstehen