Nvidia 3123 drivers multitexturing bug (?)

I have been trying to get a test application to work using the NVidia 3123 drivers. The application draws a handful of polys which are multitextured (pattern + lightmap) using glDrawElements. Unfortanately, the polys are all black. After some investigation, it became clear that the texture coordinate data for the second texture unit was not getting set properly (it looks to be all zeros). Even worse, at times the texture coordinate data intended for the second unit was overwriting data which had already been sent to the first unit. So I’m left believing that the glClientActiveTextureARB() function is not working properly. Has anyone else seen this, and is there a workaround?

You should use glActiveTextureARB(), not glClientActiveTextureArb, in order to switch between texture units. The client side state is only about things like vertex arrays and other data which is kept in main memory, at the “client” side of the OpenGL system. Texture state and coordinates sent by glVertex() and glTexCoord() are server state, as they are sent to the GPU for processing.

Hope this helps. I have seen no driver bugs for multitexturing. It’s just tricky to get it right.

In this application, I’m using vertex arrays so I’m pretty sure the glClientActiveTextureARB is the correct choice.

The code works when using drivers other than NVidia (but there’s no HW acceleration).

Sorry about that bogus advice. I should have read your post more closely.

Try using both glClientActiveTextureARB() and glActiveTextureARB(). Compiled vertex arrays are somewhat of a gray zone between client and server state.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.