Am Samstag, 9. Februar 2008 16:00:51 schrieb Julio Fernandez: > At the moment is set in wine as *pCaps->MaxVertexBlendMatrices = > GL_LIMITS(blends) which results in a value of 0 (at least in my Linux > > computer/build), while under Windows (XPSP2 DX9c) results in a value of 4 What we return depends on the features of the OpenGL implementation. If GL_ARB_vertex_blend is not supported, we return 0, otherwise we return the limited reported to us by OpenGL, which is 4 on implementations that support it.
That said, GL_ARB_vertex_blend is not very common. Only MacOS supports it, and it is software emulated there. The Linux ATI driver used to support it until ATI switched to a different codebase. So this constant ends up beeing 0 almost everywhere. The extension was dropped in favor of vertex programs, since vertex programs appeared shortly after vertex blending and no gl app was using it at this time. On Windows drivers emulate vertex blending using vertex shaders. I am not sure if 0 is the correct value to return in case of no vertex blending support. What happens if you set it to 1? 1 would be a reasonable default as well, because we're still able to transform vertices with one matrix(ie, unblened transformation). It could also be that this game silently expects vertex blending to be supported: For one part, all dx8+ cards support this feature on Windows, and on older cards Windows has software vertex processing which can perform blending in a slow, but working fashion. I have a patch for software emulated vertex blending somewhere, but I dropped it because I didn't come across an app which uses this function. Maybe its time to revive it, and continue the work on a fixed function replacement shader.