mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Reuse texture
This commit is contained in:
+2
-3
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user