Sorry for my delay, but in last 4 months I had many other work :/ When Buggy Race was released I can back for this project (now this is my primary project). I will release preview version as soon as it will be possible. Currently I rewrited some draw operations eg (drawMeshBuffer, draw2DImage), replaced gl.h with existing Irrlicht extension handler by gl3.h and new extension handler (OGL 3.2 core functions), rebuilded 2D and 3D rendering states and many others things, but now I have question for dev team. I think that we should create one standard material (optionally clone it for each EMT_* for some compatibility existing apps) and make this driver more programmable (my current driver version is working in this way) eg. for Alpha we need:
Code: Select all
ND->setMaterialType((E_MATERIAL_TYPE)MyMaterial); // basic material is EMT_ONETEXTURE_BLEND
ND->getMaterial(0).MaterialTypeParam = pack_texureBlendFunc(EBF_SRC_ALPHA, EBF_ONE_MINUS_SRC_ALPHA, EMFN_MODULATE_1X );
I think, that for smaller projects user can stay with GL ver < 3.0, and use new 3.x driver only for more advenced projects if it will be required, so we needn't prepare too much useless built-in stuff, which will be used only in Hello World apps... We need only inform (in documentation) user how to get access to lights data etc, but shader for lighting he/she should write manually.
Because GL3.x hardware = DX 10.0+ hardware, we needn't 'queryFeature' or '#ifdef' for GL 3.0, 3.1, 3.2, 3.3 etc... I think, that we should driver up to the latest OpenGL version (currently 3.2, because 3.3 isn't avaiable in official, stable NV/ATI drivers)
What do You think about this idea?
Here screenshot (Animated Mesh + draw2dImage) with current Irrlicht OGL 3.2 (Core Profile) driver on ATI Radeon 2600 Pro (AGP):