mirror of
https://github.com/yawut/SDL.git
synced 2026-09-26 10:16:42 -05:00
When creating a software texture, synchronize the surface with the texture.
When creating a texture from a surface, synchronize the texture with the surface.
This commit is contained in:
@@ -380,6 +380,12 @@ SW_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||
texture->driverdata =
|
||||
SDL_CreateRGBSurface(0, texture->w, texture->h, bpp, Rmask, Gmask,
|
||||
Bmask, Amask);
|
||||
SDL_SetSurfaceColorMod(texture->driverdata, texture->r, texture->g,
|
||||
texture->b);
|
||||
SDL_SetSurfaceAlphaMod(texture->driverdata, texture->a);
|
||||
SDL_SetSurfaceBlendMode(texture->driverdata, texture->blendMode);
|
||||
SDL_SetSurfaceScaleMode(texture->driverdata, texture->scaleMode);
|
||||
|
||||
if (texture->access == SDL_TEXTUREACCESS_STATIC) {
|
||||
SDL_SetSurfaceRLE(texture->driverdata, 1);
|
||||
}
|
||||
|
||||
@@ -1635,6 +1635,24 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Uint8 r, g, b, a;
|
||||
int blendMode;
|
||||
int scaleMode;
|
||||
|
||||
SDL_GetSurfaceColorMod(surface, &r, &g, &b);
|
||||
SDL_SetTextureColorMod(textureID, r, g, b);
|
||||
|
||||
SDL_GetSurfaceAlphaMod(surface, &a);
|
||||
SDL_SetTextureAlphaMod(textureID, a);
|
||||
|
||||
SDL_GetSurfaceBlendMode(surface, &blendMode);
|
||||
SDL_SetTextureBlendMode(textureID, blendMode);
|
||||
|
||||
SDL_GetSurfaceScaleMode(surface, &scaleMode);
|
||||
SDL_SetTextureScaleMode(textureID, scaleMode);
|
||||
}
|
||||
|
||||
if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) {
|
||||
SDL_SetTexturePalette(textureID, fmt->palette->colors, 0,
|
||||
fmt->palette->ncolors);
|
||||
|
||||
Reference in New Issue
Block a user