DrawArrays() GL_QUAD_STRIP, alpha value is ignored ???

Hello

in the past I used the alpha value to set the transparence of a color:

gl2.glEnable(GL.GL_BLEND); // Turn Blending On
// set the color red, green, blue , alpha
gl2.glColor4f( color[1], color[2], color[3], color[0] );

this worked well

Now I changed my code and use vbo´s and DrawArrays(…) and it look like the alpha value is ignored.
Do I have to set something special when I create the ColorPointer ?
Thanks

	static void vboTestOnlyDrawSeveralQuadStrip(GL2 gl2){
		
		gl2.glEnable(GL.GL_BLEND); // Turn Blending On
		
		//--- turn shade Model Flat On
		// eaxh quad is filled with one color defined by the last vertex
		gl2.glShadeModel(GL2.GL_FLAT);
		
    	for(int i=0; i<vboIndexArray.length/2; i++){
    		// define which Types of Elements are a allowed
    		gl2.glEnableClientState( GL2.GL_VERTEX_ARRAY );
    		gl2.glEnableClientState( GL2.GL_COLOR_ARRAY );
    	
    		//--- set the vertex pointer
    		// bind the buffer, from this moment this specific buffer is used
    		gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, vboIndexArray[i]);
    		// Get the Position of the data in the memory
    		gl2.glVertexPointer(3, GL2.GL_FLOAT, 0, 0);
    		
    		//--- set the color pointer
       		// bind the buffer, from this moment this specific buffer is used
    		gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, vboIndexArray[i+(vboIndexArray.length/2)]);
    		gl2.glColorPointer(4, GL2.GL_FLOAT, 0, 0);
    	   	  	
    		// draw the Buffer
    		gl2.glDrawArrays(GL2.GL_QUAD_STRIP, 0,((intCountOfQuads * 2) + 2));    	
    	
    		// unbind the buffer, by using 0
    		gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0);    	
    	
    		// Disable vertex arrays
    		gl2.glDisableClientState( GL2.GL_COLOR_ARRAY );
    		gl2.glDisableClientState( GL2.GL_VERTEX_ARRAY );   	
    	}
		
	}//end: void vboTestOnlyDrawSeveralQuadStrip(

I don’t see anywhere where you’ve specified what blending mode to use.

Cas :slight_smile:

Ah thank you that was a good hint …

I forgot to copy
gl2.glBlendFunc(GL.GL_SRC_ALPHA,GL.GL_ZERO); // always drawn new

now it work :slight_smile:
thanks

That would discard the color already there? Isn’t glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) the standard blending function for basic 2D blending? GL_ZERO would discard what is already there… >_<

Maybe he wants something like the DEPTH_TEST? So pixels with a smalle depth will simply be ignored? (Guess this good be used nicely in a map where you render the closest layer first and so on)

He seems to just want to do finalColor = color * alpha, so I think his problem is resolved already.