zoukankan      html  css  js  c++  java
  • SDL 学习笔记(1)

    基本是对所学的总结,并且内容东拼西凑。

    SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。

    SDL的安装不用多说了,到处都有讲。

    SDL_Init();

    SDL初始化函数,里面主要是初始化内存等。

    SDL为我们提供了两种等待事件的方式:
    int SDL_WaitEvent(SDL_Event *event); int SDL_PollEvent(SDL_Event *event);

    嗯,其中SDL_Event是对OS相关的事件结构体的再封装。。一般来说系统应该只有一个消息队列,但是对于模态对话框就需要新的消息队列来覆盖原来的消息队列了。

    SDL_Surface *SDL_SetVideoMode(int width, int height, int bitsperpixel, Uint32 flags);
    恩,这个函数是创建一个内存FB或者硬件FB。。SDL_Surface代表了这个FB的内容。需要注意的是系统中真实的显示FB只能有一个,但是需要其他的来用于缓存显示。显示的时候先SDL_BlitSurface将其他FB赋给显示FB ,然后SDL_Flip即显示就OK了。

    需要注意的是硬件加速问题,必须利用双缓冲,否则会有问题,什么问题?会出现撕裂效果。。。。。。。反正很不爽。另外需要注意在硬件加速下,不能直接访问到FB,因为没有权利。。。。。。。。。。。。还要注意SDL_Surface的深入复制问题。小心出错。

    另外可以看看SDL_Surface结构体里面有一个SDL_PixelFormat *format;成员。我们一般会选择使用作为被抠色的矩形图片的颜色格式。

    如果要显示文本,就使用用*.ttf文件,据我所知,freetype不错。。。 有机会还要深入研究一下。

    感觉SDL的错误处理机制是学习了 MS的 getlasterror 机制。。。。。。。大家认为呢。

    SDL_LoadBMP(char*)

    没什么好说的就是加载图片,看看BMP图片格式就行了。这是最简单的图片格式,一般加载16或者32位色的。

    一个界面离不开按钮等控件,我要说的就是不管是什么控件,你就按着要求画图就行了,状态改变的时候再重新画图或者对控件指定区域画图,其实不是画图,是画FB。。。。。。。。。。。。。所以呢,所有控件都是对用户而言的,对程序而言只有图片和敏感区域而已。判断鼠标区域而已,程序麻烦一点罢了但是不难。

    多线程,还真没有什么好说的,和一般的一样用就行了。对了,要注意工作者线程和UI线程。。。。只有UI线程才处理事件。

    SDL的网络功能还比较弱。就先不说了。

                                        写的非常简陋,有机会我慢慢深入

                                           10.1.31

  • 相关阅读:
    HDU 4069 Squiggly Sudoku
    SPOJ 1771 Yet Another NQueen Problem
    POJ 3469 Dual Core CPU
    CF 118E Bertown roads
    URAL 1664 Pipeline Transportation
    POJ 3076 Sudoku
    UVA 10330 Power Transmission
    HDU 1426 Sudoku Killer
    POJ 3074 Sudoku
    HDU 3315 My Brute
  • 原文地址:https://www.cnblogs.com/SuperXJ/p/1660523.html
Copyright © 2011-2022 走看看