Загрузка текстуры
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
// Объект, который, собственно, является главным окном приложения
RenderWindow window(VideoMode(150, 100), "SFML Works!");
// Главный цикл приложения: выполняется, пока открыто окно
while (window.isOpen())
{
// Обрабатываем события в цикле
Event event;
while (window.pollEvent(event))
{
// Пользователь нажал на «крестик» и хочет закрыть окно?
if (event.type == Event::Closed)
// тогда закрываем его
window.close();
}
// Установка цвета фона - белый
window.clear(Color::White);
// Создаём переменную текстуры
Texture texture;
// Подгружаем нашу текстуру из файла texture.png
texture.loadFromFile("C:\\dev\\SFML_Tutorial\\Debug\\texture.png");
// Создаём спрайт и устанавливаем ему нашу текстуру
Sprite sprite(texture);
// Отрисовка спрайта
window.draw(sprite);
// Отрисовка окна
window.display();
}
return 0;
}
Сглаживание
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
// Объект, который, собственно, является главным окном приложения
RenderWindow window(VideoMode(150, 100), "SFML Works!");
// Главный цикл приложения: выполняется, пока открыто окно
while (window.isOpen())
{
// Обрабатываем события в цикле
Event event;
while (window.pollEvent(event))
{
// Пользователь нажал на «крестик» и хочет закрыть окно?
if (event.type == Event::Closed)
// тогда закрываем его
window.close();
}
// Установка цвета фона - белый
window.clear(Color::White);
// Создаём переменную текстуры
Texture texture;
// Подгружаем нашу текстуру из файла texture.png
texture.loadFromFile("C:\\dev\\SFML_Tutorial\\Debug\\texture.png");
// Включаем режим сглаживания для нашей текстуры
texture.setSmooth(true);
// Создаём спрайт и устанавливаем ему нашу текстуру
Sprite sprite(texture);
// Отрисовка спрайта
window.draw(sprite);
// Отрисовка окна
window.display();
}
return 0;
}
многократно повторять текстуру в пределах одного спрайта
|
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
// Объект, который, собственно, является главным окном приложения
RenderWindow window(VideoMode(500, 300), "SFML Works!");
// Главный цикл приложения: выполняется, пока открыто окно
while (window.isOpen())
{
// Обрабатываем события в цикле
Event event;
while (window.pollEvent(event))
{
// Пользователь нажал на «крестик» и хочет закрыть окно?
if (event.type == Event::Closed)
// тогда закрываем его
window.close();
}
// Установка цвета фона - белый
window.clear(Color::White);
// Создаём переменную текстуры
Texture texture;
// Подгружаем нашу текстуру из файла texture.png
texture.loadFromFile("C:\\dev\\SFML_Tutorial\\Debug\\texture.png");
// Включаем режим повторения для текстуры
texture.setRepeated(true);
// Создаём спрайт размером 400х198 и присваиваем ему нашу текстуру (текстура имеет размер 100х100)
Sprite sprite(texture, IntRect(0, 0, 400, 198));
// Отрисовка спрайта
window.draw(sprite);
// Отрисовка окна
window.display();
}
return 0;
}
изменить и цвет самого спрайта, который будет мультипликативно складываться с текущей текстурой
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
// Объект, который, собственно, является главным окном приложения
RenderWindow window(VideoMode(750, 300), "SFML Works!");
// Главный цикл приложения: выполняется, пока открыто окно
while (window.isOpen())
{
// Обрабатываем события в цикле
Event event;
while (window.pollEvent(event))
{
// Пользователь нажал на «крестик» и хочет закрыть окно?
if (event.type == Event::Closed)
// тогда закрываем его
window.close();
}
// Установка цвета фона - белый
window.clear(Color::White);
// Создаём переменную текстуры
Texture texture;
// Подгружаем нашу текстуру из файла texture.png
|
texture.loadFromFile("C:\\dev\\SFML_Tutorial\\Debug\\texture.png");
// Создаём семь спрайтов для примера
Sprite sprite1(texture);
Sprite sprite2(texture);
Sprite sprite3(texture);
Sprite sprite4(texture);
Sprite sprite5(texture);
Sprite sprite6(texture);
Sprite sprite7(texture);
// Первый спрайт остаётся на месте в качестве образца
// Сдвигаем второй спрайт вправо на 105 пикселей
sprite2.move(105, 0);
// Устанавливаем ему цвет - зелёный
sprite2.setColor(Color::Green);
// Сдвигаем третий спрайт вправо на 210 пикселей
sprite3.move(210, 0);
// Устанавливаем ему цвет - красный
sprite3.setColor(Color::Red);
// Сдвигаем четвёртый спрайт вправо на 315 пикселей
sprite4.move(315, 0);
// Устанавливаем ему цвет - жёлтый
sprite4.setColor(Color::Yellow);
// Сдвигаем пятый спрайт вправо на 420 пикселей
sprite5.move(420, 0);
// Устанавливаем ему цвет – белый + прозрачность 128
sprite5.setColor(Color(255, 255, 255, 128));
// Сдвигаем шестой спрайт вправо на 525 пикселей
sprite6.move(525, 0);
// Устанавливаем ему цвет – белый + прозрачность 64
sprite6.setColor(Color(255, 255, 255, 64));
// Сдвигаем седьмой спрайт вправо на 630 пикселей
sprite7.move(630, 0);
// Устанавливаем ему цвет – белый + прозрачность 32
sprite7.setColor(Color(255, 255, 255, 32));
// Отрисовка всех спрайтов
window.draw(sprite1);
window.draw(sprite2);
window.draw(sprite3);
window.draw(sprite4);
window.draw(sprite5);
window.draw(sprite6);
window.draw(sprite7);
// Отрисовка окна
window.display();
}
return 0;
}
Трансформации
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
// Объект, который, собственно, является главным окном приложения
RenderWindow window(VideoMode(600, 300), "SFML Works!");
// Главный цикл приложения: выполняется, пока открыто окно
while (window.isOpen())
{
// Обрабатываем события в цикле
Event event;
while (window.pollEvent(event))
{
// Пользователь нажал на «крестик» и хочет закрыть окно?
|
if (event.type == Event::Closed)
// тогда закрываем его
window.close();
}
// Установка цвета фона - белый
window.clear(Color::White);
// Создаём переменную текстуры
Texture texture;
// Подгружаем нашу текстуру из файла texture_bricks.jpg (текстура кирпича)
texture.loadFromFile("C:\\dev\\SFML_Tutorial\\Debug\\texture_bricks.jpg");
// Создаём пять спрайтов для примера
Sprite sprite1(texture);
Sprite sprite2(texture);
Sprite sprite3(texture);
Sprite sprite4(texture);
Sprite sprite5(texture);
// Позиция
sprite1.setPosition(10.f, 30.f); // абсолютное значение
sprite2.move(170.f, 10.f); // смещение относительно текущей позиции
// Вращение
sprite3.setPosition(450.f, 30.f); // сначала сдвинем наш спрайт в сторону
sprite3.setRotation(45.f); // абсолютное значение в 45°
// sprite.rotate(15.f); // можно задать смещение относительно текущего значения угла (+15°)
// Масштаб
sprite4.setPosition(10, 150); // сначала сдвинем наш спрайт вниз
sprite4.setScale(0.3f, 0.9f); // абсолютное значение масштаба
sprite5.setPosition(100, 170); // сначала сдвинем наш спрайт в сторону
sprite5.scale(1.5f, 0.2); // смещение параметров масштабирования относительно текущих значений
// Отрисовка всех спрайтов
window.draw(sprite1);
window.draw(sprite2);
window.draw(sprite3);
window.draw(sprite4);
window.draw(sprite5);
// Отрисовка окна
window.display();
}
return 0;
}
Проблема белого квадрата
Sprite loadSprite(std::string filename) { Texture texture; texture.loadFromFile(filename); return Sprite(texture); } // Ошибка: в данном месте происходит уничтожение текстуры |