在VisualStudio 2012中配置SDL可以参考这篇文章:SDL2学习笔记1-环境搭建以及HelloSDL
将SDL窗口嵌入MFC总可以参考这篇文章:在MFC中使用SDL2.0(SDL窗口嵌入到MFC中)
本文测试环境:win7 64位 + Qt5 + SDL2 ;
第一步,下载Windows下SDL2的库文件。在这里下载,如下图:
第二步,新建QT工程。此处新建了一个纯C++项目(新建QT项目配置基本一样),如下:
第三步,将下载后的lib文件夹和include文件夹以及一张640*480的bmp格式图片复制到main.cpp文件的上一层目录下。如下:
第四步,配置lib库。打开.pro文件,如下:
在.pro文件的后面加入如下代码:
#第一种方法:格式为: LIBS += -L+相对路径+空格+-l+库文件的名字(不加.lib)
LIBS += -L../lib/x86 -lSDL2
LIBS += -L../lib/x86 -lSDL2main
LIBS += -L../lib/x86 -lSDL2test
#第二种方法:格式为: LIBS += -L+绝对路径+空格+-l+库文件的名字(不加.lib)
#LIBS += -LE:/CODE/QT/lib/x86 -lSDL2
#LIBS += -LE:/CODE/QT/lib/x86 -lSDL2main
#LIBS += -LE:/CODE/QT/lib/x86 -lSDL2test
#第三种方法:格式为: LIBS += -L+相对路径++库文件的名字(加.lib)
#LIBS += -L../lib/x86/SDL2.lib
#LIBS += -L../lib/x86/SDL2main.lib
#LIBS += -L../lib/x86/SDL2test.lib
#第四种方法:
#LIBS += -L../lib/x86
#LIBS += SDL2.lib
#LIBS += SDL2main.lib
#LIBS += SDL2test.lib
第五步,为main.cpp添加SDL程序。程序如下:
#include <iostream>
#include "../include/SDL.h"
#undef main
using namespace std;
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main()
{
//The window we'll be rendering to
SDL_Window* gWindow = NULL;
//The surface contained by the window
SDL_Surface* gScreenSurface = NULL;
//The image we will load and show on the screen
SDL_Surface* gHelloWorld = NULL;
//首先初始化 初始化SD视频子系统
if(SDL_Init(SDL_INIT_VIDEO)<0)
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
return false;
}
//创建窗口
gWindow=SDL_CreateWindow("SHOW BMP",//窗口标题
SDL_WINDOWPOS_UNDEFINED,//窗口位置设置
SDL_WINDOWPOS_UNDEFINED,
SCREEN_WIDTH,//窗口的宽度
SCREEN_HEIGHT,//窗口的高度
SDL_WINDOW_SHOWN//显示窗口
);
if(gWindow==NULL)
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
return false;
}
//Use this function to get the SDL surface associated with the window.
//获取窗口对应的surface
gScreenSurface=SDL_GetWindowSurface(gWindow);
//加载图片
gHelloWorld = SDL_LoadBMP("../Hello_World.bmp");//加载图片
if( gHelloWorld == NULL )
{
printf( "Unable to load image %s! SDL Error: %s\n", "Hello_World.bmp", SDL_GetError() );
return false;
}
//Use this function to perform a fast surface copy to a destination surface.
//surface的快速复制
//下面函数的参数分别为: SDL_Surface* src ,const SDL_Rect* srcrect , SDL_Surface* dst , SDL_Rect* dstrect
SDL_BlitSurface( gHelloWorld , NULL , gScreenSurface , NULL);
SDL_UpdateWindowSurface(gWindow);//更新显示copy the window surface to the screen
SDL_Delay(2000);//延时2000毫秒
//释放内存
SDL_FreeSurface( gHelloWorld );//释放空间
gHelloWorld = NULL;
SDL_DestroyWindow(gWindow);//销毁窗口
gWindow = NULL ;
SDL_Quit();//退出SDL
return 0;
}
其中需要注意的有:
1.添加SDL头文件:#include"../include/SDL.h"
2.在头文件的下面要加入这条语句:#undef main,这是因为SDL中的 SDL_main.h已经定义了main。
第六步,编译运行程序,可以看到运行结果为:
整个测试工程可以在这里下载:http://download.csdn.net/detail/hjl240/9063263