Alpahbelnding

BlitzMax Forums/BlitzMax OpenGL Programming/Alpahbelnding

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Hi!

Strict

Type TQuad
	Global oList : TList

	Field fPosition : Float[3]
	Field fAlpha    : Float
	
	Method Render()
		glTranslatef Self.fPosition[0], Self.fPosition[1], Self.fPosition[2]
		glBegin GL_QUADS
			glColor4f 1.0, 1.0, 1.0, Self.fAlpha
			
			glNormal3f 0.0, 0.0, 1.0 ; glVertex3f -1.0, -1.0, 0.0
			glNormal3f 0.0, 0.0, 1.0 ; glVertex3f  1.0, -1.0, 0.0
			glNormal3f 0.0, 0.0, 1.0 ; glVertex3f  1.0,  1.0, 0.0			
			glNormal3f 0.0, 0.0, 1.0 ; glVertex3f -1.0,  1.0, 0.0
		glEnd
	End Method
	
	Method Compare:Int(oObject:Object)
		If TQuad(oObject) Then
			If TQuad(oObject).fPosition[2] < Self.fPosition[2] Then
				Return 1
			ElseIf TQuad(oObject).fPosition[2] = Self.fPosition[2] Then
				Return 0
			Else
				Return -1
			EndIf
		Else
			Return 1
		EndIf
	End Method
	
	Function Create:TQuad(fX:Float, fY:Float, fZ:Float, fAlpha:Float)
		Local oQuad:TQuad = New TQuad
		
		oQuad.fPosition[0] = fX
		oQuad.fPosition[1] = fY
		oQuad.fPosition[2] = fZ
		oQuad.fAlpha = fAlpha
		
		TQuad.oList.AddLast oQuad
		Return oQuad
	End Function
End Type

Local iIndex : Int
Local oQuad  : TQuad
Local fX     : Float
Local fZ     : Float

bglCreateContext 640, 480, 0, 0, BGL_BACKBUFFER | BGL_DEPTHBUFFER

TQuad.oList = CreateList()

glMatrixMode GL_PROJECTION
glLoadIdentity()
gluPerspective 45.0, 640.0/480.0, 0.1, 1000.0

glDepthFunc GL_LEQUAL
glEnable GL_DEPTH
glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
glEnable GL_BLEND

For iIndex = 1 To 1000
	oQuad = TQuad.Create(Rand(-5.0, 5.0), Rand(-5.0, 5.0), Rand(-1.0, -1000.0), 0.3)
Next

glMatrixMode GL_MODELVIEW
glClearColor 0.4, 0.6, 0.8, 1.0


glEnable GL_CULL_FACE
'glEnable GL_LIGHTING
'glEnable GL_LIGHT0

While Not KeyDown(KEY_ESCAPE)
	glClear GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT

	If KeyDown(KEY_LEFT) Then fX :- 0.1
	If KeyDown(KEY_RIGHT) Then fX :+ 0.1
	If KeyDown(KEY_UP) Then fZ :- 0.1
	If KeyDown(KEY_DOWN) Then fZ :+ 0.1
	
	TQuad.oList.Sort()
	glLoadIdentity()
	glTranslatef -fX, 0.0, -fZ
	
	For oQuad = EachIn TQuad.oList
		glPushMatrix
		oQuad.Render()
		glPopMatrix
	Next

	bglSwapBuffers()
Wend

bglDeleteContext()

End


'glEnable GL_LIGHTING
'glEnable GL_LIGHT0

->

glEnable GL_LIGHTING
glEnable GL_LIGHT0

so alphabelnding does not work! :(

any ideas?

cu olli


Edit: Sorrrryyyyy, 2 days later I know the problem! Just using alphavalues with glMaterialfv!!!