Hilfe mit Transparenz in OpenGL [Hat sich erledigt]

  • Hallo liebe Community!
    Ich bins mal wieder und hab auch schonwieder ein Problem.
    In letzter Zeit beschäftige ich mich mit Java und OpenGL in Java (mit LWJGL).
    Bisher funktioniert auch alles super, aber seit ca. einer Stunde sitze ich an einem Motion Blur Skript und komme nicht weiter.
    Ich möchte mehrere Quads semi-transparent zeichnen, aber OpenGL will das anscheinend nicht.
    Leider finde ich mittels Google keine Lösung :(
    Hier ist der Codeschnipsel der Betroffen ist:

    Spoiler anzeigen
    VertexArray


    //keine panik die variable wird an die funktion erfolgreich übergeben also wundert euch nicht
    //warum die variable hier quadVertexes heißt :)
    //Aufbau: Die erste Dimension (1,2,3,4) regelt den Punkt der von OpenGl gezeichnet wird (mittels glVertex2f)
    // Die zweite Dimension (0,1) sind die x(0) und y(1) Koordinaten des Punktes
    //Der Typ des Arrays ist int quadVertexes[][] = new int[5][2]; falls das wichtig ist
    quadVertexes[0][0] = 0;
    quadVertexes[1][0] = 100;
    quadVertexes[1][1] = 100;
    quadVertexes[2][0] = 300;
    quadVertexes[2][1] = 100;
    quadVertexes[3][0] = 300;
    quadVertexes[3][1] = 400;
    quadVertexes[4][0] = 100;
    quadVertexes[4][1] = 400;

    Ich habe bereits viel versucht, das könnt ihr mir glauben, aber ich schaffe es nicht, dass
    glColor4f(0.8f,0.1f,1.0f, opacity);
    transparenz erstellt,
    nicht einmal wenn ich in der Schleife das opacity durch 0.2f ersetze.

    Falls ihr euch wundert, wie ich versuche Motion Blur damit zu erstellen, ich versuche folgendes:
    Ich will bei Bewegung einfach Quads zeichnen, die genau so aussehen wie das Original,
    die neuen Quads sind aber verschoben (nach links wenn es sich nach rechts bewegt),
    und zudem transparent.
    Die Variable "steps" gibt an, wie viele Quads gezeichnet werden für die unschärfe,
    desto mehr steps, desto detailierter der/die/das Motion Blur.


    Ich hoffe, dass jemand, der sich mit OpenGL auskennt, mir dabei helfen kann.
    Und ich hoffe auch, dass ich keinen Anfängerfehler begangen habe.

    MfG. PrideRage

    Edit:
    Folgende 2 Zeilen haben mir den Weg zur Transparenz ermöglicht
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    Nun funktioniert alles so wie es soll.

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

    Einmal editiert, zuletzt von PrideRage (13. August 2011 um 14:27)

  • Mal OT: Wieso nimmst du nicht C, C++ oder BASIC ?
    Sind alle viel schneller, und Basic ist ja auch nicht allzu schwer

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Java ist plattformunabhängig, aber dafür verbraucht Java jede Menge Resourcen.

    Das Problem könnte evtl. bei
    opacity -= (1/steps);
    liegen. Hast du mal
    opacity -= (1.0f/steps);
    ausprobiert?

    EDIT: übersehen, dass du 0.2f ausprobiert hast

    Einmal editiert, zuletzt von TheShadowAE (12. August 2011 um 12:49)

  • Zitat

    Wieso nimmst du nicht C, C++ oder BASIC ?

    Ich finde C bzw. C++ sind nicht gerade einfache Programmiersprachen, ich kann zwar etwas C++, aber bei OpenGL + C hab ich dann entgültig aufgegeben C für OpenGL zu benutzen.
    Und BASIC ist einfach irgendwie anders als die anderen Programmiersprachen, deswegen versuche ich auch gar nicht mich mit BASIC zurecht zufinden.

    Zitat

    wenn man richtig Skill hat, kann man aus Java eine menge raushohlen, aber schneller als C++ ist es nicht.

    Momentan reicht mir die Geschwindigkeit von Java aus, denn ich habe ja nicht vor ein Crysis in Java zu programmieren ^^
    Für das, was ich vor habe ist Java definitiv besser für mich geeignet als C++.

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.