Wiki Page Content

SDL_Init

Используйте эту функцию для инициализации библиотеки SDL. Эта функция должна быть вызвана перед использованием любой другой функции SDL.

Синтаксис

int SDL_Init(Uint32 flags)

Параметры Функции

flags

Подсистема инициализации флагов; Смотреть Примечания для деталей

Возвращаемое Значение

Возвращает 0 в случае успеха или отрицательное значение в случае ошибки; Для получения дополнительной информации вызывать SDL_GetError () .

Примеры кода

C

#include "SDL.h"
#include <stdio.h> /* для fprintf() */
#include <stdlib.h> /* для atexit() */

int main(int argv, char** argc) {
    if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0) {
        fprintf(stderr, 
                "\nUnable to initialize SDL:  %s\n",
                SDL_GetError()
               );
        return 1;
    }
    atexit(SDL_Quit);

    /* ... */

    return 0;
}

C++

#include <exception>
#include <string>
#include "SDL.h"

class InitError: public std::exception {
    public:
        InitError();
        InitError(const std::string&);
        virtual ~InitError() throw();
        virtual const char* what() const throw();
    private:
        std::string msg;
};

InitError::InitError():
  exception(), msg(SDL_GetError()) {}
InitError::InitError(const std::string& m):
  exception(), msg(m) {}
InitError::~InitError() throw() {}
const char* InitError::what() const throw() {
    return msg.c_str();
}

class SDL {
    public:
        SDL(Uint32 flags = 0) throw(InitError);
        virtual ~SDL();
};

SDL::SDL(Uint32 flags) throw(InitError) {
    if (SDL_Init(flags) != 0)
        throw InitError();
}

SDL::~SDL() {
    SDL_Quit();
}

/* ... */

#include <iostream>

int main(int argc, char **argv) {
    try {
        SDL sdl(SDL_INIT_VIDEO|SDL_INIT_TIMER);

        /* ... */

        return 0;
    }

    catch (const InitError& err) {
        std::cerr
            << "Error while initializing SDL:  "
            << err.what() << std::endl;
    }

    return 1;
}

Примечания

Подсистемы Event Handling, File I/O, и Threading инициализируются по умолчанию. Вы должны дополнительно инициализировать другие подсистемы, если вы хотите их использовать в своём приложение.

Флаги могут быть любыми из следующих (можно использовать вместе):

SDL_INIT_TIMER

подсистема времени

SDL_INIT_AUDIO

звуковая подсистема

SDL_INIT_VIDEO

видео подсистема

SDL_INIT_JOYSTICK

подсистема джойстика

SDL_INIT_HAPTIC

подсистема обратной тактильной связи (force feedback)

SDL_INIT_GAMECONTROLLER

подсистема игрового контроллера

SDL_INIT_EVENTS

подсистема событий

SDL_INIT_EVERYTHING

все перечисленные выше подсистемы

SDL_INIT_NOPARACHUTE

не учитывает фатальные сигналы

Если флаг SDL_INIT_NOPARACHUTE не установлен, он будет установлен для часто игнорируемых сигналов (таких как SIGSEGV).

Если у вас есть необходимость проинициализировать одну из подсистем отдельно, можете вызвать SDL_InitSubSystem() с нужным вам флагом

Связанные Функции


CategoryAPI, CategoryInit

None: SDL_Init__rus (last edited 2014-02-27 16:56:52 by valodya21)

Feedback
Please include your contact information if you'd like to receive a reply.
Submit