Alpahbelnding
BlitzMax Forums/OpenGL Module/Alpahbelnding
| ||
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!!! |