SDL_Init
Используйте эту функцию для инициализации библиотеки SDL. Эта функция должна быть вызвана перед использованием любой другой функции SDL.
Contents
Синтаксис
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() с нужным вам флагом