OpenGL ES 2 version 2.7 for Warp3D Nova / AmigaOS4 is on my FTP for testers to test now!
- Fix: my internal VBOs must initially set to what I internally call "emulation" mode, otherwise one dummy glVertexAttrib call per used generic VA-attribute-index was eventually necessary to get standard-conforming behaviour because that call would also set that flag. This problem was unlikely to happen in real world though because usually no program would rely and use the 0,0,0,1 generic vertex-attribute's default value, instead practically every real world program would call glVertexAttrib anyway. Still, it was a bug. It was revealed as a side-effect in one of Juhas test-programs.
- Fix: dos.library isn't closed anymore... Closing it was the reason for the OS becoming unstable if you tried to delete / replace (it was closed on lib expunge) ogles2.library after running an ogles2 client program.
Those two from above were in 2.6 already, but I didn't write a notification info back then. And then there is this:
- added support for GL_TEXTURE_BASE_LEVEL and GL_TEXTURE_MAX_LEVEL to glTexParameter and glGetTexParameter. Requested by Caras for AmiCraft. This allows you to adjust the limits of a texture's mipmap-chain. Was a bit tricky because for Nova those are attributes of the texture-data whereas the other glTexParameter-equivalents are attributes of the texture-sampler. And while the texture-sampler is always present, the texture-data is not until e.g. a glTexImage-call. Therefore those new attributes have to be handled in a quite different way and also have to be mirrored by ogles2.library.
- glGenerateMipmap now uses the values of GL_TEXTURE_BASE_LEVEL and GL_TEXTURE_MAX_LEVEL instead of always using 0 and 1000 respectively.
- added support for GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD and GL_TEXTURE_LOD_BIAS to glTexParameter and glGetTexParameter. Roughly spoken those allow you to tweak the GPU's mipmap selection. Had to adjust some internals because in contrast to all the other supported parameters those are floats, not integers.
- consequently added GL_SGIS_texture_lod to the extension string.
- added support for glGet GL_MAX_TEXTURE_LOD_BIAS. Note: as of now Nova doesn't support a true query for this, so for now I return 16, which is what high-end Radeons support for sure.
- added GL_EXT_texture_lod_bias to the extension string. Note that it's not exactly matching the extension's definition. The reason is that there was no GLES2 implementation which supported that feature until now
And in later GL versions it is core functionality. So this old EXT was the best match I found.
- added support for the wrap-mode GL_MIRROR_CLAMP_TO_EDGE (which is actually an OpenGL 4.4 feature
).
- consequently added GL_ARB_texture_mirror_clamp_to_edge to the extension string.
- Fix: nobody noticed, but glGetTexParameter returned Nova-enum-values instead of GL-enum-values for GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T.
- Fix: if a mipmaped texture was made non-mipmap, then the minification mode had to be adjusted eventually. Nobody noticed, but by accident I applied it to the magnification setting...
- Fix: in 99% Nova's default state values are identical to those of OpenGL. One exception is the texture filtering though, Nova defaults to "nearest" whereas OpenGL defaults to GL_NEAREST_MIPMAP_LINEAR for minification and GL_LINEAR for magnification. Forgot to enforce those. Went unnoticed so far because any half decent program would not rely on or use such defaults. But Kas1e managed to find some which do
- Fix: under certain circumstances the lib tried to hash the data behind what it at that code-location falsely thought was a vertex attrib pointer, when in reality it was a non-zero VBO offset. This fixes the crash with Capehills SDL testdraw2 if batching enabled.
- from now on the archive also contains an unstripped version of the lib which contains debug symbols, as requested by Kas1e.
- !don't forget to download the new include-folder too!
- version set to 2.7 (13.4.2019)
Cheers,
Daniel