SDL2.0 绘制图像

如何建立SDL风格的Hello World程序。

既然你已经配置好了SDL, 是时候来建立一个能加载并显示一张图片的基本图形程序了。

  
  
  1. //将SDL函数和数据类型包含进来
  2. #include "SDL/SDL.h"
在源文件顶部,我们包含了SDL的头文件,以使用SDL的函数和数据类型。

记住这一点:你们中的有些人(比如Visual Studio用户)需要以下面这种方式包含SDL的头文件:

#include "SDL.h"

所以,如果编译器报了“找不到SDL/SDL.h”的错误时,要么是因为你包含了错误的路径,要么是你忘了把SDL.h放在正确的位置。

  
  
  1. int main( int argc, char* args[] )
  2. {
  3. //声明表面
  4. SDL_Surface* hello = NULL;
  5. SDL_Window* screen = NULL;
在使用SDL时,你必须让你的main函数像上面那样声明,你不能用 void main()或者任何其他类似方式

  
  
  1. //启动SDL
  2. SDL_Init( SDL_INIT_EVERYTHING );
  3.  
  4. //设置窗口
  5. screen = SDL_CreateWindow("Title", 100, 100, 640, 480, SDL_WINDOW_RESIZABLE);//创建窗口
  6.   SDL_Renderer *render  = SDL_CreateRenderer(screen, -1, 0);
  7. SDL_Texture *texture = SDL_CreateTextureFromSurface(render, hello);
  8. //加载图像
  9. hello = SDL_LoadBMP( "hello.bmp" );
在main函数里我们首先调用的函数是 SDL_Init()。调用这个函数能初始化SDL的所有子系统,然后我们可以开始使用SDL的图形函数。

下面,调用 SDL_CreateWindow() 是用来建立一个640像素宽、480像素高的32位(位/像素)窗口。

窗口建立好后,我们使用 SDL_LoadBMP()来加载图片。这个函数需要一个指向位图文件的路径作为参数,并返回一个指向加载好的表面的指针。如果在加载过程中发生了错误,这个函数会返回 NULL

  
  
  1. //将图像应用到窗口上
  2. SDL_RenderClear(render);
  3. SDL_RenderCopy(render, texture, NULL, NULL);
  4. SDL_RenderPresent(render);
  5.  
  6. //暂停
  7. SDL_Delay( 2000 );
既然图片已经应用到窗口上,并且能显示出来,那么我们还必须让这个窗口保持可见,以防止窗口瞬间闪烁一下然后消失。我们通过调用 SDL_Delay()让窗口停留一会儿。这里,我们让窗口延时2000毫秒(即2秒)。

  
  
  1. //释放已加载的图像
  2. SDL_FreeSurface(hello);
  3. SDL_DestroyTexture(texture);
  4. SDL_DestroyRenderer(render);
  5. SDL_DestroyWindow(Screen);
  6. SDL_Quit();
  7. return 0;
  8. }
因为我们的程序里不再使用这张加载好的图片,所以我们需要将它从内存中移除。你不能仅仅使用 delete,你必须使用 SDL_FreeSurface()来从内存中移除图像。在程序的末尾,我们使用 SDL_Quit() 来关闭SDL。

你可能想问为什么我们没有删除窗口表面。不用担心, SDL_Quit()会自动清除它的。

祝贺你!你已经完成了你的第一个图形程序!
demo:http://download.csdn.net/detail/sz76211822/9877358

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值