Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1427278
  • 博文数量: 430
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 4388
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 18:04
文章存档

2013年(1)

2008年(2)

2007年(14)

2006年(413)

分类: LINUX

2006-05-26 11:00:02

首先你要下载并安装SDL开发包。
如果装在C盘下,路径为C:\SDL1.2.5
如果在WINDOWS下。你可以按以下步骤:
1.打开VC++,点击"Tools",Options
2,点击directories 选项
3.选择"Include files"增加一个新的路径。
"C:\SDL1.2.5\include"
4,现在选择"Libary files“增加
"C:\SDL1.2.5\lib"
现在你可以开始编写你的第一个SDL程序了.

这里有一个简单的程序。目的是在窗口里显示一幅图片。
步骤:
1.我们先用SDL_Init()初始化SDL_video系统。
2,我们设置程序的窗口标题
3,我们创建窗口并用SDL_SetVideoMode()取得平面(surface)的

指针(呵呵,很像DDRAW吧里的缓冲面)但比DDRAW初始化简单太

多了。
4.将背景图片载入临时平面(surface)
5,用SDL_DisplayFormat()创建一个和主平面相同的拷贝做为临

时平面。(这就是类似DDRAW双缓冲吧)可以加快渲染速度。
6.调用SDL_FreeSurface释放临时平面占用内存
7.现在在"main loop"中不断的检测事件和更新屏幕。
8.当用户点击ESC或"q",停止循环并退出
9,释放内存。
用SDL_FreeSuface释放平面
用SDL_Quit()清空SDL

下面是代码:
#include "SDL.h"

int main ( int argc, char *argv[] )
{
  /* initialize SDL */
  SDL_Init(SDL_INIT_VIDEO);

  /* set the title bar */
  SDL_WM_SetCaption("SDL Test", "SDL Test");

  /* create window */
  SDL_Surface* screen = SDL_SetVideoMode(640, 480, 0, 

0);

  /* load bitmap to temp surface */
  SDL_Surface* temp = SDL_LoadBMP("hello.bmp");

  /* convert bitmap to display format */
  SDL_Surface* bg = SDL_DisplayFormat(temp);

  /* free the temp surface */
  SDL_FreeSurface(temp);

  SDL_Event event;
  int gameover = 0;

  /* message pump */
  while (!gameover)
  {
    /* look for an event */
    if (SDL_PollEvent(&event)) {
      /* an event was found */
      switch (event.type) {
        /* close button clicked */
        case SDL_QUIT:
          gameover = 1;
          break;

        /* handle the keyboard */
        case SDL_KEYDOWN:
          switch (event.key.keysym.sym) {
            case SDLK_ESCAPE:
            case SDLK_q:
              gameover = 1;
              break;
          }
          break;
      }
    }

    /* draw the background */
    SDL_BlitSurface(bg, NULL, screen, NULL);

    /* update the screen */
    SDL_UpdateRect(screen, 0, 0, 0, 0);
  }

  /* free the background surface */
  SDL_FreeSurface(bg);

  /* cleanup SDL */
  SDL_Quit();

  return 0;
}

阅读(4023) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~