您的位置:首页 > 其它

SDL2.0 绘制图像

2017-06-22 10:20 246 查看


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

既然你已经配置好了SDL, 是时候来建立一个能加载并显示一张图片的基本图形程序了。
//将SDL函数和数据类型包含进来
#include "SDL/SDL.h"

在源文件顶部,我们包含了SDL的头文件,以使用SDL的函数和数据类型。

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

所以,如果编译器报了“找不到SDL/SDL.h”的错误时,要么是因为你包含了错误的路径,要么是你忘了把SDL.h放在正确的位置。
int main( int argc, char* args[] )
{
//声明表面
SDL_Surface* hello = NULL;
SDL_Window* screen = NULL;

在使用SDL时,你必须让你的main函数像上面那样声明,你不能用
void main()
或者任何其他类似方式

    //启动SDL
SDL_Init( SDL_INIT_EVERYTHING );
 
//设置窗口
screen = SDL_CreateWindow("Title", 100, 100, 640, 480, SDL_WINDOW_RESIZABLE);//创建窗口
  SDL_Renderer *render  = SDL_CreateRenderer(screen, -1, 0);
SDL_Texture *texture = SDL_CreateTextureFromSurface(render, hello);
//加载图像
hello = SDL_LoadBMP( "hello.bmp" );

在main函数里我们首先调用的函数是
SDL_Init()
。调用这个函数能初始化SDL的所有子系统,然后我们可以开始使用SDL的图形函数。

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

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

    //将图像应用到窗口上
SDL_RenderClear(render);
SDL_RenderCopy(render, texture, NULL, NULL);
SDL_RenderPresent(render);
 
//暂停
SDL_Delay( 2000 );

既然图片已经应用到窗口上,并且能显示出来,那么我们还必须让这个窗口保持可见,以防止窗口瞬间闪烁一下然后消失。我们通过调用
SDL_Delay()
让窗口停留一会儿。这里,我们让窗口延时2000毫秒(即2秒)。
    //释放已加载的图像
SDL_FreeSurface(hello);
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(render);
SDL_DestroyWindow(Screen);

SDL_Quit();
return 0;
}

因为我们的程序里不再使用这张加载好的图片,所以我们需要将它从内存中移除。你不能仅仅使用
delete
,你必须使用
SDL_FreeSurface()
来从内存中移除图像。在程序的末尾,我们使用
SDL_Quit()
 来关闭SDL。

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

祝贺你!你已经完成了你的第一个图形程序!

demo:http://download.csdn.net/detail/sz76211822/9877358
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: