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.rhkb.cn/news/458607.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过conda install -c nvidia cuda=“11.3.0“ 安装低版本的cuda,但是却安装了高版本的12.4.0

问题 直接通过 conda install -c nvidia cuda"11.3.0"安装得到的却是高版本的 不清楚原理 解决方法 不过我们可以分个安装 runtime toolkit 和 nvcc 安装指定版本的 cudatoolkit 和 nvcc conda install -c nvidia cuda-cudart"11.3.58" conda instal…

电机学习-SVPWM合成原理

一、核心理论 SVPWM 算法的理论基础是平均值等效原理 &#xff0c;即在一个开关周 T s T_s Ts​内通过对基本电压矢量加以组合&#xff0c;使其平均值与给定电压矢量相等。 引用于《现代永磁同步电机控制原理及MATLAB仿真》 二、合成原理 在扇区 I 为例&#xff1a; 矢量 U o…

【实用知识】Spring Boot 优雅捕捉异常的几种姿势

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【损害和风险评估&坑洼】路面坑洼检测系统源码&数据集全套:改进yolo11-DCNV3

改进yolo11-DLKA等200全套创新点大全&#xff1a;路面坑洼检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…

【OpenAI】第五节(图像生成)利用 OpenAI 的 DALL·E 实现自动化图像生成:从文本到图像的完整教程

引言 OpenAI 推出的 DALLE 工具因其能够生成令人惊叹的艺术作品而备受瞩目。DALLE 不仅能够生成静态图像&#xff0c;还能根据用户的需求进行风格化处理&#xff0c;创造出独特的艺术作品。通过 OpenAI 的 API&#xff0c;你可以轻松将 DALLE 的强大功能集成到你的 Python 程序…

单反相机内存卡误删照片怎么办?别急,这里有恢复方法

在摄影的世界里&#xff0c;单反相机无疑是众多摄影爱好者与专业摄影师的首选工具。它不仅能够捕捉细腻丰富的画面细节&#xff0c;还提供了高度的操作灵活性和可扩展性。然而&#xff0c;在使用单反相机的过程中&#xff0c;我们难免会遇到一些技术上的困扰&#xff0c;其中之…

【网络面试篇】三次握⼿、四次挥手综述

目录 一、三次握手 1. 过程描述 2. 为什么不是四次握手&#xff1f;为什么不能两次握手&#xff1f; 二、四次挥手 1. 过程描述 2. 为什么是四次挥手&#xff1f; 一、三次握手 1. 过程描述 ① 客户端 向 服务器 发送 SYN 报文、初始化序列号 ISN&#xff08;seqx&…

自定义鼠标事件在拖拽中的使用

目标&#xff1a; 显示鼠标在容器元素中划过时经过的元素,但是容器内肯能会出现大量元素&#xff0c;所以直接给容器元素添加click事件&#xff0c;通过elementFromPoint的API模拟子元素被点击事件效果 看看效果吧 涉及的重要对象 MousEvent 参考 MDN 相关代码 operateCont…

[项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引

目录 编写建立索引的模块 Index 1. 设计节点 2.基本结构 3.(难点) 构建索引 1. 构建正排索引&#xff08;BuildForwardIndex&#xff09; 2.❗构建倒排索引 3.1 cppjieba分词工具的安装和使用 3.2 引入cppjieba到项目中 倒排索引代码 本篇文章&#xff0c;我们将继续项…

C++《vector的模拟实现》

在之前《vector》章节当中我们学习了STL当中的vector基本的使用方法&#xff0c;了解了vector当中各个函数该如何使用&#xff0c;在学习当中我们发现了vector许多函数的使用是和我们之前学习过的string类的&#xff0c;但同时也发现vector当中一些函数以及接口是和string不同的…

在Postgresql中对空间数据进行表分区的实践

在数据库管理中&#xff0c;合理地对数据进行分区可以提高查询性能和数据管理效率。 本文将详细介绍在Postgresql中对空间数据进行表分区的实践过程。 测试计算机容量有限&#xff0c;测试最大数据量为1,000,000条。 关键字: Postgresql PostGIS 表分区 空间数据 测试计算…

Easy Excel合并单元格情况简单导入导出

需求 实现报表数据的导入导出&#xff0c;表格中部分数据是系统生成&#xff0c;部分数据是甲方填写&#xff0c;录入系统。 批号唯一 Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.…

【modbus协议】libmodbus库移植基于linux平台

文章目录 下载库函数源码编译路径添加libmodbus 源码分析核心数据结构常用接口函数 开发 TCP Server 端开发TCP Client 端 下载库函数源码 编译路径添加 libmodbus 源码分析 核心数据结构 modbus_t结构体&#xff1a; 这是 libmodbus 的核心数据结构&#xff0c;代表一个 Mod…

机房巡检机器人有哪些功能和作用

随着数据量的爆炸式增长和业务的不断拓展&#xff0c;数据中心面临诸多挑战。一方面&#xff0c;设备数量庞大且复杂&#xff0c;数据中心内服务器、存储设备、网络设备等遍布&#xff0c;这些设备需时刻保持良好运行状态&#xff0c;因为任何一个环节出现问题都可能带来严重后…

从0到1学习node.js(express模块)

文章目录 Express框架1、初体验express2、什么是路由3、路由的使用3、获取请求参数4、电商项目商品详情场景配置路由占位符规则5、小练习&#xff0c;根据id参数返回对应歌手信息6、express和原生http模块设置响应体的一些方法7、其他响应设置8、express中间件8.1、什么是中间件…

如何搭建直播美颜SDK平台的最佳实践?美颜API的实现与集成详解

本篇文章&#xff0c;将从技术实现、平台搭建、API集成以及性能优化四个方面&#xff0c;为开发者详解如何搭建一个直播美颜SDK平台。 一、直播美颜SDK平台的技术架构 一般的美颜效果包括磨皮、亮肤、瘦脸、大眼等&#xff0c;这些效果的实现需要依赖图像增强和滤镜算法。核心…

【51单片机】第一个小程序 —— 点亮LED灯

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 单片机介绍LED灯介绍练习创建第一个项目点亮LED灯LED周期闪烁 单片机介绍 单片机&#xff0c;英文Micro Controller Unit&#xff0…

创建ODBC数据源SQLConfigDataSource函数的用法

网络上没有这个函数能实际落地的用法说明&#xff0c;我实践后整理一下&#xff1a; 1.头文件与额外依赖库&#xff1a; #include <odbcinst.h> #pragma comment(lib, "legacy_stdio_definitions.lib") 2.调用函数&#xff1a; if (!SQLConfigDataSourceW(…

阿里云镜像源无法访问?使用 DaoCloud 镜像源加速 Docker 下载(Linux 和 Windows 配置指南)

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f343; vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode&#x1f4ab; Gitee &#x1f…

java :String 类

在我们之前的讲解中我们已经了解了很多的Java知识&#xff0c;这节我们讲Java中字符如何定义以及关于String如何使用还有常见的string函数。 【本节目标】 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 …