直接使用绘图接口进行游戏开发

    了解图形接口的编程接口后,就可以直接用这些接口进行游戏的开发。由于 SDL 的开发便利性和通用性,使用SDL图形接口直接进行游戏的开发。

    SDL 拥有统一封装的绘图接口,你可以在各个平台无缝编译和使用。

    首先要从 SDL 的网站下载 SDL 的最新版本,下载网址是:

    下载地址:http://www.libsdl.org/download-2.0.php
这里写图片描述

    在下载的网站页面,可以看到 Source Code 一栏,这是 SDL 的源代码。下载源代码,直接使用 VC++、MinGW 等编译器进行编译,编译完的头文件和库文件直接就可以使用。

    如果对编译不熟悉,可以选择下载 Development Libraries,也就是编译完成后的开发包。网站已经将 Windows 下的开发环境分为 VC++32 位版和 64 位版、MinGW32 位版和 64 位版。

    下载完成后,将压缩包解压缩到任意目录,头文件和库文件使用解压缩出来的“i686-w64-mingw32”这个目录下的“include”和“lib”。

    接下来,我们在 IDE 中设置 include 路径和 lib 路径,链接程序的时候需要在 IDE 设置包含库文件 libsdl.a、libsdlmain.a。

    在开始开发的时候,首先使用 SDL_Init 来进行初始化。用这个方法传入一个 unsigned int 类型的参数,参数列表就像这样:
这里写图片描述

    其中“初始化所有系统”这个选项,除了“忽略任意错误”外,包含了以上所有不同的初始化系统,一般使用 SDL_INIT_EVERYTHING 即可。

    使用 SDL_CreateWindows 来创建一个窗体。SDL_CreateWindows 支持六个参数,分别是:窗体名称、在 Windows 屏幕显示的 x 坐标、在 Windows 屏幕显示的 y 坐标、宽、长、显示方式。

    使用 SDL_CreateRenderer 创建一个 SDL 的渲染器(SDL_Renderer)。渲染器的参数是:
这里写图片描述
    使用 SDL_RenderClear 来清空 SDL 渲染器、使用 SDL_RenderPresent 方法将渲染的结果显示出来。然后需要建立一个循环,在这个循环内,可以把 SDL 支持的图形图像函数或者其他逻辑代码往里面填写,完成游戏的程序内容。

    在这个大循环内,需要用到 SDL_Event 事件系统。在循环内捕捉用户事件,比如要退出这个循环就必须点击右上角的 X 关闭按钮才行。如果点击了 X 按钮,就会被 while 内的 event 事件捕捉到,并且匹配是不是退出事件,如果是退出事件就退出程序。

    最终退出程序的时候,使用 SDL_Quit 清除资源退出程序。
这里写图片描述

代码实现

#include  <SDL.h>
int main(int argc,char *args[])
{
    SDL_Window* window;
    SDL_Renderer* render;
    SDL_Event e;
    bool q = 0;
    int sdl=SDL_Init(SDL_INIT_EVERYTHING);

    初始化完成后,建立窗体,并编写后续的步骤

if(0 <= sdl ){
        // 当 SDL 初始化完成后创建一个标题为 "SDL Window" 的窗口, 窗口对齐方式为居中对齐,分辨率为 640x480 的窗口
        g_pWindow=SDL_CreateWindow("SDL Window",
            SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,
            640,480,SDL_WINDOW_SHOWN);
        if(0 != window)
            render=SDL_CreateRenderer(window,-1,0);  
    }
    SDL_SetRenderDrawColor(render,0,255,255,255);
    SDL_RenderClear(render);
    SDL_RenderPresent(render);

    游戏主循环的内容

while( 0 == q )
    {
       while( 0 != SDL_PollEvent( &e ) )
                {
                    // 检测到用户需要退出
                    if( e.type == SDL_QUIT )
                        q = true;
                }
    }
    SDL_Quit();
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值