今天开始学习sfml3
SFML 简介
SFML(Simple and Fast Multimedia Library)是一个简单快速的多媒体库,主要用于游戏开发。它提供了以下模块:
- Graphics - 2D 图形渲染
- Audio - 音频播放和录制
- Window - 窗口管理和事件处理
- System - 系统工具(线程、时钟等)
- Network - 网络通信
SFML 支持多种编程语言,包括 C++、C、Java、.NET、Python、Ruby 等。
欢迎
这是SFML 3.0版本的学习记录,与之前2.0版本有较大的修改,请注意区别。
如果你在寻找教程,可以访问官方网站:www.sfml-dev.org
简短示例
下面是一个官方简短的示例,
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
int main()
{
// 创建主窗口
sf::RenderWindow window(sf::VideoMode({800, 600}), "SFML window");
// 加载要显示的精灵
const sf::Texture texture("cute_image.jpg");
sf::Sprite sprite(texture);
// 创建要显示的图形文本
const sf::Font font("arial.ttf");
sf::Text text(font, "Hello SFML", 50);
// 加载要播放的音乐
sf::Music music("nice_music.ogg");
// 播放音乐
music.play();
// 开始游戏循环
while (window.isOpen())
{
// 处理事件
while (const std::optional event = window.pollEvent())
{
// 关闭窗口:退出
if (event->is<sf::Event::Closed>())
window.close();
}
// 清屏
window.clear();
// 绘制精灵
window.draw(sprite);
// 绘制字符串
window.draw(text);
// 更新窗口
window.display();
}
}
代码详解
1. 头文件引入
#include <SFML/Audio.hpp> // 音频模块
#include <SFML/Graphics.hpp> // 图形模块
- 引入 SFML 的音频和图形模块,这是使用 SFML 最常用的两个模块。
2. 创建窗口
sf::RenderWindow window(sf::VideoMode({800, 600}), "SFML window");
- 创建一个 800x600 像素的渲染窗口,标题为 "SFML window"
3. 加载和显示图片
const sf::Texture texture("cute_image.jpg"); // 加载纹理
sf::Sprite sprite(texture); // 创建精灵
Texture类用于加载图片文件Sprite类用于在屏幕上显示纹理
4. 创建文本
const sf::Font font("arial.ttf"); // 加载字体
sf::Text text(font, "Hello SFML", 50); // 创建文本对象
Font类用于加载字体文件Text类用于显示文本,参数分别为:字体、内容、字号
5. 播放音乐
sf::Music music("nice_music.ogg"); // 加载音乐
music.play(); // 播放音乐
Music类用于播放长音频文件(如背景音乐)
6. 主游戏循环
while (window.isOpen())
- 只要窗口保持打开,循环就会继续执行
7. 事件处理
while (const std::optional event = window.pollEvent())
{
if (event->is<sf::Event::Closed>())
window.close();
}
- 处理窗口事件,如关闭窗口、鼠标点击、键盘按键等
- 当检测到关闭事件时,关闭窗口
8. 渲染过程
window.clear(); // 清空屏幕
window.draw(sprite); // 绘制精灵
window.draw(text); // 绘制文本
window.display(); // 更新显示
- 每次循环都要:清空 → 绘制 → 显示

浙公网安备 33010602011771号