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
相关文章推荐
- 如何在Android用FFmpeg+SDL2.0解码图像线程
- [原]如何在Android用FFmpeg+SDL2.0解码显示图像
- SDL2.0 Image扩展库绘制TGA图片
- [原]如何在Android用FFmpeg+SDL2.0解码图像线程
- SDL2.0--绘制文字
- 如何在Android用FFmpeg+SDL2.0解码显示图像
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
- cvDrawContours:在图像上绘制外部和内部轮廓
- 使用径向渐变绘制图像
- SDL2.0图片渲染封装
- python图像处理——图像绘制
- openGL绘制图像
- 【OpenCV】功能:展示OpenCV的图像绘制功能
- 【转载】使用SDL播放YUV图像数据(转)
- opengl_NeNe 第九课,移动图像代码.vs 2010_express OPENGL 2.0
- canvas调用webgl绘制图形图像
- Kinect sdk 2.0 + Opencv 获取深度图像并保存
- SDL游戏开发系列第二话:基本图形的绘制
- Silverlight开发历程—(ImageBrush图像画刷和WriteableBitmap绘制位图)
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH2.3-几何图像绘制与文字绘制