kostenloser Webspace werbefrei: lima-city


2D Rendering Problem mit OGL

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    chatstory

    Kostenloser Webspace von chatstory, auf Homepage erstellen warten

    chatstory hat kostenlosen Webspace.

    Hi Leute,

    Ich habe ein Problem mit meinem Programmcode:

    public function render(){
    		glClearColor(0.0f,0.0f,0.0f,0.0f);
    		glClear(GL_COLOR_BUFFER_BIT);
    
    		glPushMatrix();
    		TextureSheet ss = ResourceLoader.getTexSheet("bg_mmen");
    		Texture background = ss.getTexture();
    		
    		//background.bind();
    		glBegin(GL_QUADS);
    			glTexCoord2f(0,0);
    			glVertex2i(0,0);
    			glTexCoord2f((float)(JGame.WIDTH / Math.pow(2, Math.ceil(Math.log(JGame.WIDTH)/Math.log(2)))),0);
    			glVertex2i(JGame.WIDTH,0);
    			glTexCoord2f((float)(JGame.WIDTH / Math.pow(2, Math.ceil(Math.log(JGame.WIDTH)/Math.log(2)))),(float)(JGame.HEIGHT / Math.pow(2, Math.ceil(Math.log(JGame.HEIGHT)/Math.log(2)))));
    			glVertex2i(JGame.WIDTH, JGame.HEIGHT);
    			glTexCoord2f(0,(float)(JGame.HEIGHT / Math.pow(2, Math.ceil(Math.log(JGame.HEIGHT)/Math.log(2)))));
    			glVertex2i(0, JGame.HEIGHT);
    		glEnd();	
    		
    		glPopMatrix();
    
    		glPushMatrix();
                    glColor4f(0.8f, 0.8f, 0.8f, 0.3f);
    		glBegin(GL_QUADS);
    			glVertex2f(this.x, this.y);
    			glVertex2f(this.x + this.width, this.y);
    			glVertex2f(this.x + this.width, this.y + this.height);
    			glVertex2f(this.x, this.y + this.height);
    		glEnd();
    		glPopMatrix();
    }


    Dieser Code wird in jedem Frame ausgeführt, um das Bild mit einem Rechteck darüber zu rendern.
    Wenn ich das allerdings mache, also sowohl das Rechteck als auch das Bild zu rendern (und ja, ich weiß, dass das nicht die beste Methode ist, ein Bild anzuzeigen, aber darüber möchte ich in diesem Zusammenhang keine zusätzlichen Belehrungen haben), dann legt sich über das Bild eine Schicht mit ungefähr 0.5 alpha der Farbe, die ich für das Rechteck eingestellt habe, aber das Rechteck bekommt einen Ausschnitt der Ursprungstextur, die der Hintergrund hat.

    Wenn ich

    background.release();
    aufrufe, bevor ich das Rechteck rendern lasse, dann habe ich ein schwarzes Fenster.
    Ebenso mit

    glBindTexture(GL_TEXTURE_2D, 0);


    Wenn ich den Teil mit dem Rechteck weglasse, gibt es das Problem nicht, aber ich wollte versuchen, ob ich über Textur-Oberflächen etwas anderes legen kann, was ich iwie nicht hinbekomme...
    kann mir jemand sagen, was ich falsch gemacht habe, oder was fehlt?

    Initialisieren lasse ich das ganze über

    glMatrixMode(GL_PROJECTION);
    		glLoadIdentity();
    		glOrtho(0,WIDTH,HEIGHT,0,1,-1);
    		glMatrixMode(GL_MODELVIEW);
    		glEnable(GL_TEXTURE_2D);


    Das Programm verwenden lwjgl und slick_util-library.

    Wäre echt froh, wenn mir jemand helfen könnte, ich denke nämlich nicht, dass es ein großer Fehler ist, aber ich sehe ihn gerade nicht. :/

    Danke im Voraus,

    C-Story :D
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich hab den Code zwar nicht getestet aber du musst bevor das erste Rechteck gerendert wird die Texture binden (machst du glaub ich auch mit background.bind()) und dann bevor das zweite rechteck (ohne texture) gerendert wird glBindTexture(GL_TEXTURE_2D, 0); ausführen.
  4. Autor dieses Themas

    chatstory

    Kostenloser Webspace von chatstory, auf Homepage erstellen warten

    chatstory hat kostenlosen Webspace.

    Wenn ich

    glBindTexture(GL_TEXTURE_2D, 0);


    ausführe, dann verschwinden seltsamerweise alle Texturen, die ich verwende aka das Fenster wird geleert und man sieht nur noch die Grundfarbe von glClear();
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!