Blending Problem

BlitzMax Forums/BlitzMax OpenGL Programming/Blending Problem

As i was reading about openGL i came across Blending. here is the program.

Strict

Import BRL.System
Import PUB.Glew

Global ScreenWidth% = 640
Global ScreenHeight% = 480
Global ScreanDepth% = 32

bglCreateContext ScreenWidth , ScreenHeight , ScreanDepth , BGL_BACKBUFFER

Function InitGL()

glClearColor(1.0 , 1.0 , 0.0 , 0.0) 'Yellow BackGround
glClearDepth 1.0
glViewPort (0 , 0 , ScreenWidth , ScreenHeight)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0 , ScreenWidth / ScreenHeight , 1.0 , 20.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(0.0 , 0.0 , 5.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 0.0)

glBlendFunc GL_ONE , GL_ONE
glEnable GL_BLEND

End Function

InitGL()

While Not KeyDown(Key_Escape)
Display()
Keys()
FlushMem()
bglSwapBuffers()
Wend

Function Display()
glClear GL_COLOR_BUFFER_BIT
glColor3f 0.0 , 0.0 , 1.0
glRectf -0.5 , -0.5 , 0.5 , 0.5

End Function


Function keys()

If KeyHit(Key_A)
glBlendEquation GL_FUNC_ADD
EndIf


when i run the program and push the A Button BlitzMax Creates an error and crash the program

My quastion is : is this a bug of BlitzMax or rubish code of mine

This kind of problem is most likely not a bug with BMAX, but a bug with either bmax's glew/gl implementation, or your program. I'm not really sure which.

You need to call glewinit() somewhere.

I tryed to call glewInit() after the BGLCreateContext command. I tryed even in the main loop but stills the same error. I tryed the same program in win98 (previusly in winxp) and i take from blitxMax the error unhandled memory ecxeption error for the command glBlendEquation GL_FUNC_ADD

I haven't heard of glBlendEquasion, is that a glew call?

Check your GLDriver. Mine does not support glBlendColor or glBlendEquation. Maybe you need to update the driver?

Sveinung

im not 100% sure but maby you need to use the GLglBlendEquationProc to use the glBlendEquation.

dont really know.

I haven't heard of glBlendEquasion, is that a glew call?

Yeah, you need to check if the GL_ARB_imaging extension is present using glGetString.

http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/glBlendEquation.3.html

glGetString always returns 0. try this...
Print glGetString(GL_VERSION)

Here is a link about glGetString
http://www.mevis.de/~uwe/opengl/glGetString.html

glGetString(GL_EXTENSIONS) will return a C string (const char *) of all the extensions currently loaded, each separated by a single space. You can search the string for GL_ARB_imaging.

Sorry to drag this back from the grave, but I've just been playing with the OpenGL parts of BMax, and have run up against this problem.

When I try to use glBlendEquation the error message I get is "Caused error <unknown>"

I displayed the output of glGetString(GL_EXTENSIONS) and couldn't seem to find GL_ARB_Imaging. I'm using a fairly old ATI card, is that the limiting factor in terms of my version of OpenGL? Or the Extensions? I looked at the OpenGL site, and it said that I should refer to my card manufacturer for the most recent version of OGL for my card. I'm using the most up-to-date drivers for this card.

Also, I assume that blend effects such as add and subtract are available to me in some way, as they're used in Max2D. Are these types of blending implemented through certain configurations of the glBlendFunc parameters?

Any advice appreciated.

You could answer this question yourself checking out brl.glmax2d module sources searching for ALPHABLEND or any other blend constant :)

Have done so, all is clear now. Cheers.