繁体   English   中英

SDL2用C转换SDL1.2代码,如何滚动窗口,以前是SDL_BlitSurface

[英]SDL2 converting SDL1.2 code in C, how to scroll a Window, previously SDL_BlitSurface

我将C中的SDL 1.2代码转换为SDL 2,并且遇到了滚动文本窗口(SDL 1.2 SDL_Surface命名为nanoglk_surface)以在底部留有新行的代码:

  // Copy (scroll down).
  SDL_Rect r1 = { win->area.x, win->area.y + d,
                  win->area.w, win->area.h - d };
  SDL_Rect r2 = { win->area.x, win->area.y, win->area.w, win->area.h - d };
  SDL_BlitSurface(nanoglk_surface, &r1, nanoglk_surface, &r2);

  // Clear new, free area.
  SDL_Rect r = { win->area.x, win->area.y + win->area.h - d,
                 win->area.w, d };
  SDL_FillRect(nanoglk_surface, &r,
               SDL_MapRGB(nanoglk_surface->format,
                          win->bg[win->cur_styl].r,
                          win->bg[win->cur_styl].g,
                          win->bg[win->cur_styl].b));

这是开源C应用程序的一部分,位于此处: https : //github.com/BroadcastGames/nanoglk/blob/master/nanoglk/wintextbuffer.c-整个应用程序可以在Ubuntu 16.04或16.10上编译并正常运行。 但是我试图将其更新为SDL 2.0约定。

该应用程序只有一个带有关联渲染器和纹理的窗口。 SDL 2.0进行SDL_BlitSurface的方式是什么? 谢谢。

至于@genpfault在评论中链接到的内容:

/* ... */
SDL_BlitSurface(src, &src_rect, dst, &dst_rect);
/* ... */

与(SDL2)相同:

/* ... */
// Create texture as late as possible to save resources:
SDL_Texture *src_texture = SDL_CreateTextureFromSurface(renderer_dst, src);
SDL_RenderCopy(renderer_dst, src_texture, &src_rect, &dst_rect);
// Destroy texture as soon as possible to save resources:
SDL_DestroyTexture(src_texture);
/* ... */
SDL_RenderPresent(render_dst);

您的blit将被硬件加速。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM