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

  • 相关阅读:
    div+css清除浮动代码
    JavaScript for循环实现表格隔行变色
    JavaScript 四种显示数据方式
    table表格隔行变色
    table表格用tbody新属性获取DOM元素
    条形图
    子图--面向对象
    线的形状
    matplotlib--直线和点
    颜色和样式字符串
  • 原文地址:https://www.cnblogs.com/SuperXJ/p/1660523.html
Copyright © 2011-2022 走看看