Alpha blending



  • Guten Abend,

    ich habe folgendes Problem:

    Ich möchte eine schwarz-weiß Textur unter OpenGL so blenden, das der schwarze Teil bleibt und der weiße Teil transparent wird.
    Irgendwo klemmts bei mir, ich habe jetzt schon eine ganze Menge von Kombinationen mit glBlendFunc ausprobiert.
    Das einzige, was bei mir herauskam, war, das das weiße Transparent wurde und das schwarze eingefärbt... 😞



  • Hier ist der Ausschnitt meines Quellcodes:

    // Hintergrund
    	glBegin(GL_QUADS);
    		glColor3ub(255, 140, 0);
    		glVertex2i(0, 0);
    		glVertex2i(800, 0);
    		glColor3ub(20, 0, 100);
    		glVertex2i(800, 600);
    		glVertex2i(0, 600);
    	glEnd();
    
    	glColor3ub(255, 255, 255);
    
    	// gescrollte Layer
    	glEnable(GL_TEXTURE_2D);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    	glEnable(GL_BLEND);
    	//glBlendFunc(GL_ONE, GL_ONE);
    	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    	imga.Bind();
    	glBegin(GL_QUADS);
    		glTexCoord2f(2.0 + layer_scrolling[0], 1.0);
    		glVertex2i(0, 0);
    		glTexCoord2f(0.0 + layer_scrolling[0], 1.0);
    		glVertex2i(800, 0);
    		glTexCoord2f(0.0 + layer_scrolling[0], 0.0);
    		glVertex2i(800, 512);
    		glTexCoord2f(2.0 + layer_scrolling[0], 0.0);
    		glVertex2i(0, 512);
    	glEnd();
    	glDisable(GL_BLEND);
    	glDisable(GL_TEXTURE_2D);
    


  • Versuchs mal mit glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);



  • MuxMux: Irgendwas lädt dir ja die Textur. Geh sie doch beim erstellen einfach durch und setze das Alpha der weißen Pixel auf 0.0f. Danach wende einfach normales Blending an so wie du es haben möchtest. (GL_SRC_ALPHA, GL_ONE_MINUES_SRC_ALPHA) normalerweise.


Anmelden zum Antworten