mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-28 23:02:07 +00:00
Fix translation issue
This commit is contained in:
parent
a2edca6032
commit
69787fac72
3 changed files with 18 additions and 16 deletions
|
@ -492,6 +492,20 @@ namespace swrenderer
|
||||||
return SetStyle(style, FLOAT2FIXED(alpha), translation, color, basecolormap, shadedlightshade);
|
return SetStyle(style, FLOAT2FIXED(alpha), translation, color, basecolormap, shadedlightshade);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SpriteDrawerArgs::SetStyle(FRenderStyle style, float alpha, lighttable_t *translation, uint32_t color)
|
||||||
|
{
|
||||||
|
SetTranslationMap(translation);
|
||||||
|
SetLight(nullptr, 0.0f, 0);
|
||||||
|
|
||||||
|
FDynamicColormap *basecolormap = &identitycolormap;
|
||||||
|
if (!SetStyle(style, alpha, -1, color, basecolormap))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!Colormap())
|
||||||
|
SetTranslationMap(identitymap);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void SpriteDrawerArgs::FillColumn(RenderThread *thread)
|
void SpriteDrawerArgs::FillColumn(RenderThread *thread)
|
||||||
{
|
{
|
||||||
thread->Drawers()->FillColumn(*this);
|
thread->Drawers()->FillColumn(*this);
|
||||||
|
|
|
@ -18,6 +18,7 @@ namespace swrenderer
|
||||||
|
|
||||||
bool SetStyle(FRenderStyle style, fixed_t alpha, int translation, uint32_t color, FDynamicColormap *&basecolormap, fixed_t shadedlightshade = 0);
|
bool SetStyle(FRenderStyle style, fixed_t alpha, int translation, uint32_t color, FDynamicColormap *&basecolormap, fixed_t shadedlightshade = 0);
|
||||||
bool SetStyle(FRenderStyle style, float alpha, int translation, uint32_t color, FDynamicColormap *&basecolormap, fixed_t shadedlightshade = 0);
|
bool SetStyle(FRenderStyle style, float alpha, int translation, uint32_t color, FDynamicColormap *&basecolormap, fixed_t shadedlightshade = 0);
|
||||||
|
bool SetStyle(FRenderStyle style, float alpha, lighttable_t *translation, uint32_t color);
|
||||||
void SetDest(int x, int y);
|
void SetDest(int x, int y);
|
||||||
void SetCount(int count) { dc_count = count; }
|
void SetCount(int count) { dc_count = count; }
|
||||||
void SetSolidColor(int color) { dc_color = color; }
|
void SetSolidColor(int color) { dc_color = color; }
|
||||||
|
|
|
@ -192,7 +192,7 @@ void DCanvas::DrawTextureParms(FTexture *img, DrawParms &parms)
|
||||||
using namespace swrenderer;
|
using namespace swrenderer;
|
||||||
|
|
||||||
static short bottomclipper[MAXWIDTH], topclipper[MAXWIDTH];
|
static short bottomclipper[MAXWIDTH], topclipper[MAXWIDTH];
|
||||||
const BYTE *translation = NULL;
|
lighttable_t *translation = NULL;
|
||||||
|
|
||||||
auto viewport = RenderViewport::Instance();
|
auto viewport = RenderViewport::Instance();
|
||||||
|
|
||||||
|
@ -224,27 +224,14 @@ void DCanvas::DrawTextureParms(FTexture *img, DrawParms &parms)
|
||||||
else if (parms.remap != NULL)
|
else if (parms.remap != NULL)
|
||||||
{
|
{
|
||||||
if (viewport->RenderTarget->IsBgra())
|
if (viewport->RenderTarget->IsBgra())
|
||||||
translation = (const BYTE*)parms.remap->Palette;
|
translation = (lighttable_t *)parms.remap->Palette;
|
||||||
else
|
else
|
||||||
translation = parms.remap->Remap;
|
translation = parms.remap->Remap;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpriteDrawerArgs drawerargs;
|
SpriteDrawerArgs drawerargs;
|
||||||
|
|
||||||
if (translation != NULL)
|
bool visible = drawerargs.SetStyle(parms.style, parms.Alpha, translation, parms.fillcolor);
|
||||||
{
|
|
||||||
drawerargs.SetTranslationMap((lighttable_t *)translation);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (viewport->RenderTarget->IsBgra())
|
|
||||||
drawerargs.SetTranslationMap(nullptr);
|
|
||||||
else
|
|
||||||
drawerargs.SetTranslationMap(identitymap);
|
|
||||||
}
|
|
||||||
|
|
||||||
FDynamicColormap *basecolormap = nullptr;
|
|
||||||
bool visible = drawerargs.SetStyle(parms.style, parms.Alpha, -1, parms.fillcolor, basecolormap);
|
|
||||||
|
|
||||||
double x0 = parms.x - parms.left * parms.destwidth / parms.texwidth;
|
double x0 = parms.x - parms.left * parms.destwidth / parms.texwidth;
|
||||||
double y0 = parms.y - parms.top * parms.destheight / parms.texheight;
|
double y0 = parms.y - parms.top * parms.destheight / parms.texheight;
|
||||||
|
|
Loading…
Reference in a new issue