Middle wall sections on two-sided linedefs use different wrap states depending on whether the texture coordinates are within the expected [0..1] range.
Previously this was handled by changing the current wrap state for a GL texture directly in Rend_RenderMaskedWall(). Also, this routine assumed tthe previous state was GL_REPEAT on both u and v axes.
Now we have the texture variant and variant specification abstractions the GL texture state for textures handled by the GL texture manager should only be updated by it, not by users of this subsystem.
Todo: This presently results in the preparation of additional copies of some textures, due to the fact a variant material has already been chosen prior to calling Rend_AddMaskedPoly(). The logic flow of rendSegSection() should be refactored so that either a) preparation of the variant is deferred or, b) final variant is chosen earlier.
Fixed: Mismanagement of GL texture state
Middle wall sections on two-sided linedefs use different wrap states
depending on whether the texture coordinates are within the expected
[0..1] range.
Previously this was handled by changing the current wrap state for a
GL texture directly in Rend_RenderMaskedWall(). Also, this routine
assumed tthe previous state was GL_REPEAT on both u and v axes.
Now we have the texture variant and variant specification abstractions
the GL texture state for textures handled by the GL texture manager
should only be updated by it, not by users of this subsystem.
Todo: This presently results in the preparation of additional copies
of some textures, due to the fact a variant material has already been
chosen prior to calling Rend_AddMaskedPoly(). The logic flow of
rendSegSection() should be refactored so that either a) preparation
of the variant is deferred or, b) final variant is chosen earlier.