Changes from 2022-10-19 to 2022-12-16 ------------------------------------- tinygl.library: - Library version is now 53.5 - Implemented the fixed function OpenGL vertex and fragment pipeline as dynamically generated shaders. This implementation is used on graphics cards that support shaders instead of the previous limited fixed function support in hardware/drivers. - Now supports setting and retrieving all OpenGL 2.1 glEnable() and glDisable() states, although no actualy functionality has been added for most of the new states yet. - Added support for GL_COLOR_SUM. - Fixed a problem where using glBufferData() to overwrite the contents of an existing vertex buffer object could lead to the new data not being used by the driver right away. - glGetBufferParameteriv() now supports querying the following attributes: GL_BUFFER_ACCESS, GL_BUFFER_MAPPED and GL_BUFFER_USAGE. - glTexGen#?() now reject setting GL_TEXTURE_GEN_MODE to GL_SPHERE_MAP for the GL_R and GL_Q coordinates, and setting GL_TEXTURE_GEN_MODE to GL_REFLECTION_MAP for the GL_Q coordinate. - When using TinyGL to render directly to a window, and that window is being resized, TinyGL will no longer overwrite the window borders. - Several other problems related to using TinyGL to render directly to a window, that could cause TinyGL to misbehave and misrender, have been fixed. - The ARB program parser now correctly parses and compiles "state.material.X" operands, and correctly handles accesses to "state.light.X" and "state.lightmodel.X". - ARB programs that access transposed state matrices now work correctly. - Setting and getting GL_TEXTURE_GEN_Q now works correctly. - In ARB programs, several state variables (accessed via 'state.' in the program source code) were not automatically updated in hardware when the OpenGL state changed. This has now been fixed. - Revamped how TinyGL keeps track of what vertex data is required to complete a draw call. Previously TinyGL could in some cases supply either not enough data, causing misrendering, or too much data, causing performance degradation. - When using immediate mode rendering (via glBegin()), TinyGL now keeps all 4 components of the texture coordinates passed and not just the first two. This makes for example cube maps and texture matrices work when using with immediate mode. - Added support for setting GL_LIGHT_MODEL_COLOR_CONTROL via glLightModel#?(). - Added support for getting the following states via glGet#?(): o GL_CURRENT_SECONDARY_COLOR o GL_INDEX_MODE o GL_LIGHT_MODEL_COLOR_CONTROL o GL_RGBA_MODE o GL_SECONDARY_COLOR_ARRAY_POINTER - The initial immediate mode normal value when creating a new context has been fixed to correspond to the value required by OpenGL. - Added support for supplying secondary colours to OpenGL via glSecondaryColor#?(). - Deleting a vertex buffer object that was currently bound to the normal array would previously keep a stale pointer to the delete vertex buffer object in the vertex array state, potentially leading to TinyGL trying to use the already deleted vertex buffer object. - If the driver fails to compile an ARB program, the driver's error message is now passed on to the OpenGL application, rather than just returning a generic error message and discarding the driver error message. - Using glBitmap() while a program/shader or a cubemap texture is active no longer fails. - The glWindowPos#?() set of functions have been fixed to correctly interpret the y coordinate is having its origin at the bottom of the screen rather than the top of the screen. This primarily caused some OpenGL example code to render status text at the bottom of the display instead of the top, or vice versa. o Please note that to preserve compatibility with existing software that expects the wrong behaviour, the standards compliant behaviour is only activated for software that calls tglEnableNewExtensions(). - TinyGL's handling of the 'default' textures for each target (texture ID 0) was broken and didn't take into account the different texture target types (GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, etc). This caused misrendering with mostly OpenGL example apps that reused the default OpenGL texture ID for rendering cube maps, instead of allocating a new texture for it. - The default state for OpenGL lights is now initialised correctly when creating a new context. Programs that use the default light position and never sets a position of their own now work correctly. - The following functions now have proper OpenGL error reporting: o glBindBuffer() o glBufferData() o glBufferSubData() o glDeleteBuffers() o glDisableClientState() o glEnableClientState() o glGetBufferParameteriv o glIsBuffer() o glLightf() o glLightfv() o glLighti() o glLightiv() o glLightModeli() o glLightModeliv() o glLightModelf() o glLightModelfv() - New OpenGL extensions advertised: o GL_EXT_secondary_color
r200.library: - Library version is now 53.4. - Added support client programs directly supplying the secondary OpenGL colour.
r300.library: - Library version is now 53.9. - Added support client programs directly supplying the secondary OpenGL colour. - Added support for several previously unsupported opcodes in the vertex program compiler and in the fragment program compilers for both R300/R400 and R500. - Fixed a bug that would lead to a Radeon hardware crash when trying to use a vertex program that used no constant data at all. - Fixed a bug where using a kill/discard instruction in a fragment program after sampling a texture could lead to program compilation failing. - Fixed a bug that would in certain cases lead to misrendering when using more than one set of texture coordinates. - Fixed a bug that could cause wrong texture rendering when switching between using programs/shaders and fixed function rendering.
freeglut.library: - New port of FreeGLUT version 3.4.0 to MorphOS. This supercedes TinyGL's built-in GLUT support, is a lot more feature complete and makes it easier to port GLUT OpenGL examples to MorphOS.
SDK: - Includes have been reworked a bit to be more MorphOS-like. clib/tinygl_protos.h is now a proper clib include that contains just the prototypes of tinygl.library's public functions. - the includes now define GL_VERSION_x_y, with x and y corresponding to the OpenGL versions supported by the includes. - For each OpenGL extension supported, the includes now define a preprocessor macro with the same name as the OpenGL extension, e.g. GL_ARB_vertex_buffer_object. - Contains includes and link library for freeglut.library. |