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图形窗口
通过键盘方向键控制移动绿色方块
相关文章:
VisualStudio2022配置2D图形库SFML
文章目录 1. 下载安装SFML库2. 创建C项目并配置SFML配置include目录和库目录链接SFML库配置动态链接库 3. 测试 1. 下载安装SFML库 SFML(Simple and Fast Multimedia Library)C库,适合2D游戏和图形界面,提供了以下模块࿱…...
「Mac畅玩鸿蒙与硬件4」鸿蒙开发环境配置篇4 - DevEco Studio 高效使用技巧
本篇将进一步介绍如何在 DevEco Studio 中高效使用各种功能,通过掌握快捷键、代码补全、调试工具等,帮助开发者在鸿蒙应用开发中大幅提升工作效率。 关键词 DevEco Studio快捷键代码补全调试工具项目导航 一、快捷键与高效操作 快捷键是提升开发效率的…...
构建生产级的 RAG 系统
对 RAG 应用程序进行原型设计很容易,但要使其高性能、健壮且可扩展到大型知识语料库却很困难。 本指南包含各种提示和技巧,以提高 RAG 工作流程的性能。我们首先概述一些通用技术 - 它们按照简单到复杂的顺序进行排列。然后,我们将更深入地研…...
完全透彻了解一个asp.net core MVC项目模板2
这是《完全透彻了解一个asp.net core MVC项目模板》的第二篇,如果你直接进入了本篇博文而不知道上下文,请先阅读《完全透彻了解一个asp.net core MVC项目模板》的第一篇。 文章目录 一、补充几个问题1、有关导航链接和Tag Helper2、_ViewStart.cshtml与…...
uniapp 如何调用音频
uniapp调用音频 button点击 <view><button click"startPlay">开始播放</button></view>方法实现 startPlay() { const innerAudioContext uni.createInnerAudioContext();innerAudioContext.src /static/sounds/oqc.mp3;innerAudioContex…...
在Facebook运营中使用住宅IP的重要性
在当前社交媒体的浪潮中,Facebook作为全球最大的社交网络之一,吸引了数以亿计的用户。为了在这一平台上实现有效的运营和推广,越来越多的博主和营销人员正在寻求最佳的养号策略。其中,IP地址的选择显得尤为重要,尤其是…...
EJB项目如何升级SpringCloud
记录某金融机构老项目重构升级为微服务过程1 如何从EJB架构拆分微服务 这个非常有趣的过程,整个过程耗时大致接近半年时光,需要考虑到重构升级保留原来的业务线,而且还要考虑后续的维护成本,保留现有的数据库表结构,…...
HTTPS 协议原理
一.HTTPS的定义 大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系,两者都是应用层协议,而HTTPS是在HTTP的基础上引入了加密层,从而将HTTP的明文传输进行加密,保障数据的安全性 二.加密与解密 定义&#…...
Vxe UI 表格行编辑(默认不显示编辑框,点击后可编辑)
效果: HTML代码:(type"integer"为这个,是限制只能输入正整数或负整数,英文和汉字自动转成0) <vxe-tableshow-overflowkeep-sourcev-loading"loading":data"ruleList"ref"Table":row-config"{isHover: true}"height"…...
移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展
10月27-30日,2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商,移远通信再次亮相,并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…...
爬虫利器playwright
是什么 它是微软在 2020 年初开源的新一代自动化测试工具,其功能和 selenium 类似,都可以驱动浏览器进行各种自动化操作。还可以录制脚本 案列-01 运行之后我们用它自动打开的谷歌浏览器,打开百度,输入漂亮小姐姐并查找&#x…...
着色器的认识
知识了解: 着色器: 顶点着色器: 用来描述顶点的特性,如位置、颜色等,其中,顶点:是指二维或三维空间中的一个点比如交点或者端点。 片元着色器:用来进行逐片元处理操作,比如光照、颜色叠加等&…...
科技的成就(六十四)
591、《传奇》开始公开测试 "2001 年 9 月,《传奇》开始公开测试。《传奇》(全称《热血传奇》)是由韩国 WeMade 娱乐开发制作的大型多人在线角色扮演游戏,由 Delphi 编写。盛大网络于2001 年获得该游戏在中国的代理权。《传奇…...
银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等...
全文链接:https://tecdat.cn/?p38026 分析师:Fanghui Shao 在当今金融领域,风险管控至关重要。无论是汽车贷款违约预测、银行挖掘潜在贷款客户,还是信贷风控模型的构建,以及基于决策树的银行信贷风险预警,…...
〈壮志凌云:独行侠〉中的超高音速战机
电影《壮志凌云:独行侠》中使用的黑星(Darkstar)高超音速概念战机模型,虽然看起来像是科幻电影里的产物,但这架飞机实际上是由洛克希德马丁公司的臭鼬工厂(Skunk Works)设计,这是一家…...
k8s集群 ceph rbd 存储动态扩容
k8s 集群 rbd 扩容有两种方法,如下所示 通过StorageClass自动扩容 # kubectl get sc csi-rbd-sc -oyaml|grep allowVolumeExpansion allowVolumeExpansion: true如果搜索有如上字段,说明是可以自动扩容的,修改对应要扩容的 PVC容量…...
C语言笔记(指针题目)例题+图解
本文分为两部分 ,第一部分为数组、字符串、字符指针在sizeof和strlen中的辨析,第二部分是一些笔试题目。若有错误,请批评指正。 目录 1.第一部分 1.1.数组名的使用 1.1.1一维整型数组在sizeof中的使用 1.1.2一维字符数组在sizeof中的使用…...
从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)
从零开始的 vue项目部署到服务器详细步骤(vue项目build打包nginx部署配置ssl证书) 文章目录 从零开始的 vue项目部署到服务器详细步骤(vue项目build打包nginx部署配置ssl证书)一、前言二、vue项目部署前配置1、vite.config.js 增加…...
[OceanBase-不止于记录]:揭秘双引擎战略,共探AI时代数据架构未来
前言 又到了一年一度大家最爱的探会文章,非常荣幸收到OceanBase官方的邀请参加2024 OceanBase 年度发布会,作为一个经常参加线下探会的博主,每一次体验都有所不同,每一次新技术的突破都让人感到无比兴奋。同时,作为数…...
项目:抽奖系统
文章目录 1. 项目:抽奖系统 1. 项目:抽奖系统 from faker import Fakerfk Faker(localezh_CN)name_list [] for i in range(100):name_list.append(fk.name()) print(name_list)import randomclass MyFrame(wx.Frame):def __init__(self):wx.Frame.__…...
synchronized进阶原理
synchronized进阶原理 1.轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多个线程访问,但多线程访问的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化(如果出现竞争,操作系统会将轻量级锁升级为重量级锁)。轻量级锁对使用者是透明的(由操作系统控制),即语法仍是s…...
C++,STL 052(24.10.29)
内容 1.对map容器的大小进行操作。 2.map容器的交换操作。 运行代码 #include <iostream> #include <map>using namespace std;void printMap(map<int, int> &m) {for (map<int, int>::iterator it m.begin(); it ! m.end(); it){cout <<…...
git下载和配置
git是什么? Git是一种分布式版本控制系统,用于跟踪文件的变化,尤其是源代码。它允许多个开发者在同一项目上进行协作,同时保持代码的历史记录。Git的主要特点包括: 分布式:每个开发者都有项目的完整副本&a…...
Linux基础—基础命令及相关知识5(ubuntu网络配置)
网络的配置方法 centos网络配置 centos的网卡位置 /etc/sysconfig/network-scripts/ifcfg-ens33(centos网卡文件) bootproto表示获得IP地址的方式是静态的还是动态 onboot表示启动系统时是否激活该网络接口 设置IP地址,子网掩码,网关,dns…...
使用 firewall-cmd 管理 Linux 防火墙
firewalld-cmd命令翻译<一> Linux 系统中,firewalld 是一个流行的动态防火墙管理工具, firewall-cmd 是它的命令行接口。通过 firewall-cmd,可以轻松地管理防火墙规则、配置区域(zones)、处理端口等。 这篇文章…...
鸿蒙OS试题
哪些是持续部署最佳实践? A. 灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广 B.手工部署:持续部署可以采用手工部署的方式发布软件: 1、有一份非常详尽的文档,该文档描述了执行步骤及每个步骤中易出错的地方; 2、以手工测试来确认该…...
Flutter InkWell组件去掉灰色遮罩
当InkerWell组件内部获取到焦点时,会展示一层灰色遮罩 将focusColor属性设置为透明即可 Flutter InkWell焦点效果源码分析 问题描述 当 InkWell 组件获得焦点时,会显示一层灰色遮罩效果。需要找出这个效果是由哪些组件控制的,以及具体的…...
Android——metaData
获取元数据信息的步骤: 调用 getPackageManager 方法获得当前应用的包管理器调用包管理器的 getActivityInfo 方法获得当前活动的信息对象活动信息对象的 metaData 是 Bundle 包裹类型,调用包裹对象的 getString 即可获得指定名称的参数值 配置 metaDa…...
SLAM|1. 相机投影及相机畸变
一个能思考的人,才真是一个力量无边的人。——巴尔扎克 本章主要内容: 1.针孔相机模型 2.相机成像的几个坐标系图像 3.畸变及相机标定 本节主要介绍在照相机拍摄过程中,现实物体如何跟照片上的像素关联起来,具体涉及相机成像的物…...
nginx配置及虚拟主机
nginx配置及虚拟主机 一、http协议介绍1、网站类型2、涉及的软件3、http协议介绍 二、nginx安装、启动1、nginx介绍2、nginx安装3、nginx启动管理 三、nginx配置文件1、配置文件语法结构2、全局配置3、事件驱动模型的配置4、http的配置 四、虚拟主机配置1、类型2、基于名称的虚…...
怎么做网站的外部连接/重庆高端品牌网站建设
开封菜(菜谱app) 隐私声明: 1、我们不会收集和使用你的个人信息。2、用户使用我们的服务,应遵守国家有关法律法规和规章制度。3、用户在使用过程中遇到任何问题,可以通过评论与评分将建议反馈给我们,我们将…...
html5网站开发语言的有点/百度推广关键词质量度
接下来的连续几篇,我们要演练作一个描述通用的二维表,并演示该二维表的继承通途。先定义数据行的状态1/**//// <summary> 2 /// 数据行的状态 3 /// </summary>4publicenumRowState5{ 6 /**//// <summary> 7 /// …...
word里面网站超链接怎么做/百度推广哪家做的最好
不少人买平板电脑的目的就是用来玩吃鸡的,然而有的人发现买回来后玩吃鸡会有一点点卡,这是什么原因呢?主要与配置和设置有关系,因为吃鸡对配置要求还是比较高的,如果选择一些配置较差的低端品牌自然会卡顿,那么它对于…...
手机网站生成app软件/媒介
前言:我个人觉得aptana3.2 for eclipse依然不够强大,有很多提示依然出不来,相比而言,我现在最强的应该是spket。 这里简单说下思路吧: 1、http://www.cnblogs.com/chang290/archive/2013/02/17/2913936.html 这个帖子基…...
wordpress生成静态教程/seo网站推广服务
1.函数重载的原理是在汇编时,给各个函数取别名,C语言不能重载的原因是没有取别名 2.C的函数在汇编时,会给函数取别名,C语言不会。这时如果C来调用C语言的函数,那么C会去找取了别名的函数但是C语言没有起别名ÿ…...
网站建设基础型/国外免费推广平台有哪些
ADR: 这是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。 使用的格式:ADR register,exper。 在编译源程序时,汇编器首先计算出当前PC到exper的偏移值#offset_to_exper,然后会用一条ADD或者 SUB指令来替换这条伪…...