SDL媒体库编译及使用
来源:互联网 发布:js 高级技巧 编辑:程序博客网 时间:2024/06/05 14:57
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
编译
1、从SDL的官方网站上下载源码
http://www.libsdl.org/release/SDL2-2.0.3.zip
我这里用的是SDL2-2.0.3
解压
第二步:从微软官方下载DirectX10的安装包与SDK
DirectX10的安装包下载地址(建议使用迅雷直接把链接输进去下):http://hnny.skycn.com/down/directx_dec2005_redist.exe
DirectX10的SDK下载地址:http://download.microsoft.com/do ... a/dxsdk_aug2007.exe
经过上面两步的安装后,就可以很好的编译SDL了,
到D:/SDL-1.2.13下,把VisualC.ZIP解压到当前目录.(也就是D:/SDL-1.2.13/VisualC/下是其内容,否则肯定编译不了)
第三步:
打开文件: D:/SDL-1.2.13/VisualC/SDL.sln ,开始编译(建议点击VS菜单:生成->批生成->全选,生成)
第四步:编译成功后,把Release版本的LIB集中起来,也就是把D:/SDL-1.2.13/VisualC/SDL/Release下的文件SDL.lib 和D:/SDL-1.2.13/VisualC/SDLmain/Release下的文件SDLmain.lib拷到D:/lib (没有该目录则新建).
把D:/SDL-1.2.13/VisualC/SDL/Release 下的SDL.DLL拷到C:/Windows/system32下(平常不建议这么做,因为就一个DLL,算了)
第五步:配置环境
打开VS菜单:工具->选项->项目和解决方案树目录下的VC++目录->添加包含文件目录: D:/SDL-1.2.13/include ->添加库文件目录: D:/lib
第六步:测试
新建一个WIN32控制台程序,在VS菜单:项目->属性->配置属性->链接器->输入:附加依赖项中加入:SDL.lib SDLmain.lib
添加一个CPP源文件:写上如下内容:
///////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <SDL.h>
#include <windows.h>
/*
PLEASE NOTE: the program will require SDL.dll which is located in
dev-c++'s dll directory. You have to copy it to you
program's home directory or the path.
*/
/* The screen surface */
SDL_Surface *screen = NULL;
/* This function draws to the screen; replace this with your own code! */
static void
draw ()
{
static int direction = 0;
static int value = 0;
static int which = 0;
SDL_Rect rect;
Uint32 color;
/* Create a black background */
color = SDL_MapRGB (screen->format, 0, 0, 0);
SDL_FillRect (screen, NULL, color);
/* Determine which color the layer should have */
if (direction == 0)
{
value += 2;
if (value >= 256)
{
value = 255;
direction = 1;
}
}
else
{
value -= 2;
if (value <= 5)
{
value = 0;
direction = 0;
which++;
if (which == 5)
which = 0;
}
}
/* Draw a layer with variable color */
switch (which)
{
case 0:
color = SDL_MapRGB (screen->format, value, 0, 0);
break;
case 1:
color = SDL_MapRGB (screen->format, 0, value, 0);
break;
case 2:
color = SDL_MapRGB (screen->format, 0, 0, value);
break;
case 3:
color = SDL_MapRGB (screen->format, value, value, value);
break;
case 4:
color = SDL_MapRGB (screen->format, value, 0, value);
break;
}
rect.w = screen->w / 2;
rect.h = screen->h / 2;
rect.x = (screen->w / 2) - (rect.w / 2);
rect.y = (screen->h / 2) - (rect.h / 2);
SDL_FillRect (screen, &rect, color);
/* Make sure everything is displayed on screen */
SDL_Flip (screen);
/* Don't run too fast */
SDL_Delay (1);
}
int
main (int argc, char *argv[])
{
int done;
/* Initialize SDL */
if (SDL_Init (SDL_INIT_VIDEO) < 0)
{
MessageBox (0,TEXT("完法初始化SDL"), TEXT("Error"), MB_ICONHAND);
exit (1);
}
atexit (SDL_Quit);
/* Set 640x480 16-bits video mode */
screen = SDL_SetVideoMode (640, 480, 16, SDL_SWSURFACE | SDL_DOUBLEBUF);
if (screen == NULL)
{
MessageBox (0, TEXT("无法把其设置为640*480模式"), TEXT("Error"), MB_ICONHAND);
exit (2);
}
SDL_WM_SetCaption ("SDL MultiMedia Application", NULL);
done = 0;
while (!done)
{
SDL_Event event;
/* Check for events */
while (SDL_PollEvent (&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
break;
case SDL_QUIT:
done = 1;
break;
default:
break;
}
}
/* Draw to screen */
draw ();
}
return 0;
}
- SDL媒体库编译及使用
- 浅析live555媒体库之入门编译使用
- 使用android-ndk编译SDL
- SDL使用记录之一 编译(windows)
- 交叉编译SDL 安装配置及环境变量的设置
- 媒体库
- Android媒体库使用分组查询
- sdl 使用
- SDL使用
- linux 下如何编译使用SDL的工程
- 使用mingw编译SDL工程时出现WinMain@16错误
- Qt中使用SDL和FFmpeg的编译问题
- windows下SDL使用ndk-build编译失败问题
- 在studio中使用libsdl2.so,编译SDL Demo
- sdl编译问题 sdl printf没有输出 sdl编译错误
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库(二)
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库(二)
- 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库
- UDP广播与多播
- Java 字符终端上获取输入三种方式
- IT爱情
- Julia语言简介与环境安装
- 浮点数的二进制表示
- SDL媒体库编译及使用
- UFT12.01 patch 1---UFT_00104.EXE
- [C++]LeetCode: 56 Unique Paths
- 2014 阿里校招附加题2014-8-29
- Linux管道编程实例
- n个数的最小公倍数
- Git fetch和git pull的区别
- C++11 并发指南系列(C++11 多线程初探)
- UIView练习:联系人管理