Годовой архив: 2014

Открытие и управление окном SFML

Введение

Этот урок рассказывает только о том, как открывать окно и как управлять им. Рисование объектов находится вне сферы действия модуля sfml-window: оно обрабатывается модулем sfml-graphics. Однако, управление окном остаётся точно таким же, поэтому прочитать этот урок в любом случае нужно.

Открытие окна

Окна в SFML определяются с помощью класса sf::Window. Окно может быть создано и открыто непосредственно в конструкторе:

#include <SFML/Window.hpp>

int main()
{
    sf::Window window(sf::VideoMode(800, 600), "My window");

    ...

    return 0;
}

Первый аргумент — видео режим (video mode), определяет размер окна (внутренний размер, без заголовка и границ). Здесь мы создаём окно 800 x 600 пикселей.
Класс sf::VideoMode имеет несколько интересных статических функций для получения разрешения рабочего стола или списка допустимых видео режимов для полноэкранного режима. Если интересно, то загляните в документацию.

Второй аргумент это просто заголовок окна. (далее…)

Пользовательские потоки данных

Введение

SFML имеет несколько ресурсных классов: для картинок, шрифтов, звуков и т.д. В большинстве программ эти ресурсы будут загружены из файлов, при помощи своих функций loadFromFile(). В некоторых других случаях, ресурсы будут упакованы в исполняемый файл или в большой файл данных, и тогда будут загружаться из памяти с помощью loadFromMemory(). Эти функции покрывают практически все возможные варианты использования — но не все.

Иногда вы хотите загрузить файлы их необычного места, такого как сжатый/зашифрованный архив или удалённая сеть, например. Для подобных специальных случаев SFML предоставляет третью функцию загрузки: loadFromStream(). Эта функция считывает данные из абстрактного класса sf::InputStream, который позволяет определить собственные реализации.

В этом уроке вы узнаете как написать и использовать свой собственный производный входной поток. (далее…)

Потоки

Что такое поток?

Большинство из вас должно быть уже знают что такое потоки, но тем не менее, здесь приведено небольшое объяснение для тех, кто впервые сталкивается с этой концепцией.

Поток это последовательность инструкций, которая обрабатывается параллельно другим потокам (т.е. параллельно другим инструкциям). Каждая программа состоит как минимум из одного потока: главного потока, который запускает функцию main(). Программы, использующие только один поток, называются однопоточными, но если вы добавите в неё один или несколько потоков, то она уже будет многопоточной.

(далее…)

Обработка времени

Время в SFML

В отличии от большинства других библиотек, в которых время представлено в виде числа миллисекунд (тип данных uint32) или числа секунд (float), SFML не навязывает какие-либо специфические единицы или типы для значений времени. Вместо этого библиотека оставляет этот выбор за пользователем через гибкий класс sf::Time. Все классы и функции библиотеки SFML, работающие со временем, используют этот класс.

sf::Time определяет временной интервал. Иными словами, не представляет какое-то конкретное значение даты и времени (год/месяц/день/час/минута/секунда), а просто показывает количество времени, и то как оно будет истолковываться, зависит уже от контекста.

(далее…)

Подключение SFML в Qt Creator

Создаём пустой проект и в проектном файле (.pro) добавляем следующие строчки:

LIBS += -LC:/SFML/lib

CONFIG(release, debug|release): LIBS += -lsfml-audio -lsfml-graphics -lsfml-main -lsfml-network -lsfml-window -lsfml-system
CONFIG(debug, debug|release): LIBS += -lsfml-audio-d -lsfml-graphics-d -lsfml-main-d -lsfml-network-d -lsfml-window-d -lsfml-system-d

INCLUDEPATH += C:/SFML/include
DEPENDPATH += C:/SFML/include

(далее…)

Что такое SFML

Что же такое этот SFML?

SFML (Simple and Fast Multimedia Library) — это библиотека для представления мультимедийных данных. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Состоит она из пяти модулей: system, window, graphics, audio и network. Об особенностях всех этих компонент и будет рассказано в уроках.

(далее…)