Reuse texture

This commit is contained in:
kichikuou
2017-02-12 16:09:56 +09:00
parent 1379df1080
commit b7d0f88a83
4 changed files with 11 additions and 3 deletions
+2 -3
View File
@@ -64,11 +64,10 @@ static void sdl_pal_check(void) {
void sdl_updateScreen(void) {
if (!sdl_dirty)
return;
SDL_Texture *texture = SDL_CreateTextureFromSurface(sdl_renderer, sdl_display);
SDL_UpdateTexture(sdl_texture, NULL, sdl_display->pixels, sdl_display->pitch);
SDL_RenderClear(sdl_renderer);
SDL_RenderCopy(sdl_renderer, texture, NULL, NULL);
SDL_RenderCopy(sdl_renderer, sdl_texture, NULL, NULL);
SDL_RenderPresent(sdl_renderer);
SDL_DestroyTexture(texture);
sdl_dirty = false;
}
+4
View File
@@ -57,7 +57,11 @@ void sdl_setWindowSize(int x, int y, int w, int h) {
view_h = h;
SDL_SetWindowSize(sdl_window, w, h);
SDL_FreeSurface(sdl_display);
SDL_DestroyTexture(sdl_texture);
sdl_display = SDL_CreateRGBSurface(0, w, h, 32, 0, 0, 0, 0);
sdl_texture = SDL_CreateTexture(sdl_renderer, sdl_display->format->format,
SDL_TEXTUREACCESS_STATIC, w, h);
//ms_active = (SDL_GetAppState() & SDL_APPMOUSEFOCUS) ? TRUE : FALSE;
}
+2
View File
@@ -34,6 +34,7 @@
struct sdl_private_data {
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *texture;
SDL_Surface *dsp; /* toplevel surface */
SDL_Surface *dib; /* offscreen surface */
@@ -70,6 +71,7 @@ extern struct sdl_private_data *sdl_videodev;
#define sdl_window (sdl_videodev->window)
#define sdl_renderer (sdl_videodev->renderer)
#define sdl_texture (sdl_videodev->texture)
#define sdl_display (sdl_videodev->dsp)
#define sdl_dib (sdl_videodev->dib)
#define sdl_col (sdl_videodev->col)
+3
View File
@@ -106,6 +106,9 @@ static void window_init(void) {
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
sdl_display = SDL_CreateRGBSurface(0, SYS35_DEFAULT_WIDTH, SYS35_DEFAULT_HEIGHT,
32, 0, 0, 0, 0);
sdl_texture = SDL_CreateTexture(sdl_renderer, sdl_display->format->format,
SDL_TEXTUREACCESS_STATIC,
SYS35_DEFAULT_WIDTH, SYS35_DEFAULT_HEIGHT);
}
static void makeDIB(int width, int height, int depth) {