![](http://kelvmiao.info/sdl-tutorial-cn/lessons/lesson01/preview2.jpg)
既然你已经配置好了SDL, 是时候来建立一个能加载并显示一张图片的基本图形程序了。
- //将SDL函数和数据类型包含进来
- #include "SDL/SDL.h"
在源文件顶部,我们包含了SDL的头文件,以使用SDL的函数和数据类型。
记住这一点:你们中的有些人(比如Visual Studio用户)需要以下面这种方式包含SDL的头文件:
记住这一点:你们中的有些人(比如Visual Studio用户)需要以下面这种方式包含SDL的头文件:
#include "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