[3] [wined3d] GLSL: implement texrect coord fixup
Henri Verbeet
hverbeet at gmail.com
Tue Mar 24 05:01:57 CDT 2009
2009/3/23 Tobias Jakobi <Liquid.Acid at gmx.net>:
>
> + if (prog->ps_args.texrect_fixup) {
> + for (i = 0; i < MAX_FRAGMENT_SAMPLERS; ++i) {
Using something like the following would avoid checking the entire
prog->rectFixup_location array when only the first few samplers are
used:
DWORD fixup = prog->ps_args.texrect_fixup;
for (i = 0; fixup; fixup >>= 1, ++i)
{
if (!(fixup & 1)) continue;
...
}
> + /* Casting to IWineD3DTextureImpl* does work here, because rectFixup_location[i]
> + * only gets initialized (with value != -1) when textures[i] is of type RECT. */
> + const IWineD3DTextureImpl* const tex = (const IWineD3DTextureImpl*)stateBlock->textures[i];
It works, but it's still unecessary. You can access the pow2Matrix
through IWineD3DBaseTextureImpl just fine. Also note that * is part of
the declarator rather than the base type in C.
> + char texrect_fixup[28] = "";
Please don't do that, handle the fixup the same way bias is handled.
> + sprintf(name, "PsamplerRectFixup%d", i);
i is unsigned here.
More information about the wine-devel
mailing list