当前位置: 首页 > news >正文

VisualStudio2022配置2D图形库SFML

文章目录

  • 1. 下载安装SFML库
  • 2. 创建C++项目并配置SFML
    • 配置include目录和库目录
    • 链接SFML库
    • 配置动态链接库
  • 3. 测试

1. 下载安装SFML库

SFML(Simple and Fast Multimedia Library)C++库,适合2D游戏和图形界面,提供了以下模块:

  • Graphics 渲染 2D 形状等
  • Windows 管理窗口和处理用户输入事件
  • Audio 播放音频文件,wav ogg等格式
  • System 管理实践、线程等系统操作
  • Network 支持TCP/UDP网络通信
    适合初学小型开发
    在这里插入图片描述

SFML官网 下载适用于Visual Studio的SFML库
官方网址:https://www.sfml-dev.org/download/sfml/2.6.0/

下载下来,22MB左右在这里插入图片描述
将SFML文件夹解压,记住解压的位置
(如 D:\ProgramFiles\SFML-2.6.0)
在这里插入图片描述

2. 创建C++项目并配置SFML

配置include目录和库目录

打开Visual Studio,创建一个新的“控制台应用”项目(C++)
右键点击项目 -> 属性。
在“VC++目录”下,找到“包含目录”,添加SFML的include文件夹路径(例如 D:\ProgramFiles\SFML-2.6.0\include)。
找到“库目录”,添加SFML的lib文件夹路径(例如 D:\ProgramFiles\SFML-2.6.0\lib)
在这里插入图片描述
在这里插入图片描述

链接SFML库

在项目属性中,配置Debug和Release

Debug
手动添加以下文件,分号隔开,或者该行尾向下三角下拉“编辑”打开对话框输入
sfml-audio-d.lib
sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib
sfml-network-d.lib
在这里插入图片描述
Release,同样方式添加
手动添加以下库文件,分号隔开,或者该行尾向下三角下拉“编辑”打开对话框输入
sfml-audio.lib
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
sfml-network.lib
在这里插入图片描述

配置动态链接库

将bin文件夹中的 .dll 文件复制到项目的输出目录(如 Debug 文件夹),这样,运行时能找到这些文件
在这里插入图片描述
在这里插入图片描述
这里需要说明一下
D:\code\CPPCode\ProTest02\x64
是项目的主输出目录,存放编译生成的最终可执行文件(.exe)和其他构建相关文件(如 .ilk 和 .pdb 文件),这是程序的运行文件位置。这里的 Debug 或 Release 子目录包含最终输出文件

D:\code\CPPCode\ProTest02\ProTest02\x64
是项目的构建过程中的中间文件存放目录,包含 .obj、.log 等文件,存储每个源文件的编译结果和构建日志。用于编译和调试信息。

在配置SFML动态链接库时,.dll文件需要放在可执行文件所在的 Debug 或 Release 文件夹下,这样可以运行时找到相关依赖

3. 测试

#include <SFML/Graphics.hpp> // 定义一个 Player 类
class Player {
public:sf::RectangleShape shape; // 使用SFML的RectangleShape类形状float speed = 5.0f;       // 定义移动速度// 构造函数,初始化形状和位置Player() {shape.setSize(sf::Vector2f(50, 50));       // 设置为50x50像素的正方形shape.setFillColor(sf::Color::Green);      // 设置颜色为绿色shape.setPosition(200, 200);               // 设置初始位置为(200, 200)}// 移动方法,根据键盘方向键更新位置void move(sf::Keyboard::Key key) {if (key == sf::Keyboard::Left)  shape.move(-speed, 0);   // 向左移动if (key == sf::Keyboard::Right) shape.move(speed, 0);    // 向右移动if (key == sf::Keyboard::Up)    shape.move(0, -speed);   // 向上移动if (key == sf::Keyboard::Down)  shape.move(0, speed);    // 向下移动}
};int main() {// 创建一个窗口,大小为400x400,标题为"Simple Game"sf::RenderWindow window(sf::VideoMode(400, 400), "Simple Game");Player player; // 实例化Player对象// 主游戏循环while (window.isOpen()) {sf::Event event;    // 创建一个事件对象,用于捕捉用户输入// 事件处理循环,捕捉所有窗口事件while (window.pollEvent(event)) {if (event.type == sf::Event::Closed)   // 检查是否有关闭窗口的事件window.close();                    // 关闭窗口// 检查按键事件,调用Player的move方法来移动形状if (event.type == sf::Event::KeyPressed)player.move(event.key.code);}window.clear();            // 清除上一帧的内容window.draw(player.shape); // 绘制形状window.display();          // 显示绘制的内容}return 0; 
}

程序使用SFML库创建了一个简单的2D图形窗口
通过键盘方向键控制移动绿色方块
在这里插入图片描述

http://www.lryc.cn/news/472164.html

相关文章:

  • 「Mac畅玩鸿蒙与硬件4」鸿蒙开发环境配置篇4 - DevEco Studio 高效使用技巧
  • 构建生产级的 RAG 系统
  • 完全透彻了解一个asp.net core MVC项目模板2
  • uniapp 如何调用音频
  • 在Facebook运营中使用住宅IP的重要性
  • EJB项目如何升级SpringCloud
  • HTTPS 协议原理
  • Vxe UI 表格行编辑(默认不显示编辑框,点击后可编辑)
  • 移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展
  • 爬虫利器playwright
  • 着色器的认识
  • 科技的成就(六十四)
  • 银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等...
  • 〈壮志凌云:独行侠〉中的超高音速战机
  • k8s集群 ceph rbd 存储动态扩容
  • C语言笔记(指针题目)例题+图解
  • 从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)
  • [OceanBase-不止于记录]:揭秘双引擎战略,共探AI时代数据架构未来
  • 项目:抽奖系统
  • synchronized进阶原理
  • C++,STL 052(24.10.29)
  • git下载和配置
  • Linux基础—基础命令及相关知识5(ubuntu网络配置)
  • 使用 firewall-cmd 管理 Linux 防火墙
  • 鸿蒙OS试题
  • Flutter InkWell组件去掉灰色遮罩
  • Android——metaData
  • SLAM|1. 相机投影及相机畸变
  • nginx配置及虚拟主机
  • ElasticSearch - Bucket Script 使用指南