创建一个最简单的imgui测试用例

在上一篇文章中,我们初步认识了一下imgui,并且成功运行了他提供的demo。这只是开始学习imgui的第一步,在实际使用时,我们需要将imgui应用到自己的工程中去,所以你需要具备将imgui加到你工程中去的能力,简单起见,我们可以利用imgui提供的examples中的一个demo来创建一个新的单独的VS工程先。

一、选定你要使用的组合

我选择的是glfw+opengl3这样的组合形式,也就是examples中的example_glfw_opengl3中的demo。在这个目录下有一个main.cpp是我们创建新工程需要的文件之一。

 二、确定需要哪些文件

1. 首先查看使用VS打开的examples中的example_glfw_opengl3中需要哪些文件。

经过删减和整理,也就是保存下来下面这些文件,在正常情况下就可以将example_glfw_opengl3的demo运行起来了。libs是直接从原来的examples中复制出来没有删减。

三、创建新的工程

上面我们已经确定了我们运行example_glfw_opengl3这个demo所需要的的最少的文件,之所以暂时先把那些没有用到的文件删除掉,是为了避免他们混淆视听,这样我们就可以有更加清晰的思路来看待这个问题,就像我们所说的商业模式中的产品模式,我们为了解决客户的问题,要提供自己的产品或者服务,但是在最开始呢,我们没有必要也不能花重资来打磨一个产品,我们只需要给出我们的“最小可行产品”就可以,那什么是最小可行产品呢,就是说,能够解决客户问题的,成本最低的,最简单的产品。当客户对我们提供的“最小可行性产品”满意了,并且愿意花时间或者花钱了,我们才开始投入人力物力来进一步打磨更量产该产品,满足客户的更多需求。

我们在VS上创建一个空工程,新创建一个thirdpaty文件夹,并且将刚才经过删减后的imgui-master文件夹放进去。并且将刚才从examples中复制出来的main.cpp剪切到工程的根目录下。

 到这里我们已经把需要的文件都准备好了,接下来我们还需要将相应的文件添加到工程中去。方法如下:

全部添加成功后就变成了下面这个样子,.h文件和.cpp文件可以区分得开。

把必须的文件都添加到工程后我们需要在属性设置中,设置路径和所需要的库 ,否则是编译不过的,文件和库都找不到。

1. 设置"Additional Include Directories",这里设置了程序中所有使用#include的方式加入工程的的文件的路径

 2. 设置“Additional Library Directory”,设置了程序需要的glfw路的路径

 3. 设置“Additional Dependences”,就是要指定工程需要的库的名称,这里的glfw3.lib文件是在咱们工程中的,而opengl3应该是系统的库。

 经过上面的设置,通常情况下程序就可以正常运行了,效果如下:

我自己在配置这个程序中遇到的一些问题有哪些呢

1. 我明明配置好了include所有的路径,我确定是正确的,为啥编译程序时还是提醒我找不到文件呢?原因是我犯了很白痴弱智的错误。所以大家一定要注意模式的统一,要不然你就会开始怀疑人生。

2. 如果你配置后出现了,库的问题,如提示说,未解析的外部符号的错误提示,那你就再创建一个新的工程再配置一遍,如果单个程序可行了,但是在你原有的工程中配置imgui时遇到了上述的问题,你要留意一下你原工程中是否有你自己添加的.props文件,你排查一下是不是因为这个 文件的问题,我也不知为什么,我删除这文件就可以解决问题,后来重新创建了一个新的.props文件,问题就解决了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252263.shtml

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

相关文章

idea中maven的setting.xml的配置

2019独角兽企业重金招聘Python工程师标准>>> <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

ref和out区别总结

ref&#xff1a;是必需要先初始化才能用,但调用时可以对它什么也不做.out&#xff1a;可以不初始化也能用,但调用时一定要对其赋值(即使已经初始化的也要赋值,哪怕是赋一个和原来一样的值).转载于:https://www.cnblogs.com/gjnsmallworld/p/7216206.html

继 承(面向对象特征之一)

1&#xff1a;成员变量。 当子父类中出现一样的属性时&#xff0c;子类类型的对象&#xff0c;调用该属性&#xff0c;值是子类的属性值。 如果想要调用父类中的属性值&#xff0c;需要使用一个关键字&#xff1a;super This&#xff1a;代表是本类类型的对象引用。 Super&…

如何将cv::Mat类型转换为imgui中的ImTextureID类型

背景&#xff1a; 我原来的工程是使用opencv的&#xff0c;所以程序中的图像都是表示为cv::Mat类型&#xff0c;为了能够在imgui窗口中显示我的cv::Mat的图像&#xff0c;我找到了下面这个函数&#xff1a; void ImGui::Image(ImTextureID user_texture_id, const ImVec2&…

react native 原生模块桥接的简单说明

原文出自&#xff1a;https://github.com/prscX/awes...博客链接&#xff1a;https://ssshooter.com/2019-02... Android 创建原生模块包 通过继承 ReactPackage 为你的原生模块包创建 Java 类&#xff0c;可以这么写&#xff1a;覆盖 createNativeModules 和 createViewManage…

UVa 1354 天平难题 枚举二叉树

题意&#xff1a;给出房间宽度 r 和 s 个挂坠的重量 wi&#xff0c;设计一个尽量宽的天平&#xff0c;挂着所有挂坠。天平由一些长度为 1 的木棍组成&#xff0c;木棍的每一端要么挂一个挂坠&#xff0c;要么挂另外一个木棍。 这题卡了很久&#xff0c;看了很多大神的代码&…

通过指针便利图像元素

for (size_t y 0; y < image.rows; y) {//row_ptr为第y行的头指针&#xff0c;unsigned char* row_ptr image.ptr<unsigned char>(y);for (size_t x 0; x < image.cols; x) {//data_ptr: 指向待访问像素unsigned char* data_ptr &row_ptr[x*image.channels…

[精华][推荐]SSO CAS单点登录框架学习 搭建详细步骤及源码

1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) &#xff0c;并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用(多个) 3) SSO 认证中心(一个) 2.SSO 实现包含以下三个原则 1) 所有的登录都在 SSO 认证中心进行。 2) SS…

电脑下载的M4A格式文件怎么转换为MP3格式

M4A文件格式并不是一个家喻户晓的名字&#xff0c;与&#xff2d;&#xff30;&#xff13;格式相比&#xff0c;知名度远远落后。但是&#xff0c;这并不意味着它无关紧要&#xff0c;有时候我们下载的音乐可能就是M4A格式的&#xff0c;如果换一个设备播放可能就会出现格式不…

python-for循环

一、功能 for 循环提供了python中最强大的循环结构&#xff08;for循环是一种迭代循环机制&#xff0c;而while循环是条件循环&#xff0c;迭代即重复相同的逻辑操作&#xff0c;每次操作都是基于上一次的结果&#xff0c;而进行的&#xff09; Python for循环可以遍历任何序列…

六、利用frp穿透连接内网的linx系统和windows系统

服务端的配置 # frps.ini [common] bind_port 7000 说明&#xff1a;防火墙放行该端口 启动&#xff1a;./frps -c ./frps.ini 后台启动&#xff1a;nohup ./frps -c ./frps.ini & 客户端的配置 (1)windows系统 # frpc.ini [common] server_addr x.x.x.x server_port 70…

根据相机内参进行图像去畸变

cv::Mat img; cv::Mat img_undistort; double fx,fy, cx, cy, k1, k2, p1, p2, k3;for(int v 0; v < img.rows; v){for(int u 0; u < img.cols; u){//根据内参数&#xff0c;计算归一化坐标系下的坐标点double x (u-cx)/fx;double y (v-cy)/fy;double r2 x*x y*y;/…

initialize方法与load方法比较

load方法和initialize方法类似点 1. 都只会调用一次2. 父类在子类之前加载 复制代码不同点在于&#xff1a; 1. 加载时间不同&#xff0c;load方法在main()函数前进行调用&#xff0c;initialize在第一次调用类的所属方法时在调用<可能永远不调用>。2. load方法不会被Cat…

KindEditor

1、进入官网 2、下载 官网下载&#xff1a;http://kindeditor.net/down.php 3、文件夹说明 ├── asp asp示例 ├── asp.net asp.net示例 ├── attached 空文件夹&#xff0c;放置关联文件attached ├── …

service mysqld start,Failed to start mysqld.service: Access denied

service mysqld start 然后报&#xff1a; AUTHENTICATING FOR org.freedesktop.systemd1.manage-units Authentication is required to start mysqld.service.Authenticating as: lll,,, (lll)Password: polkit-agent-helper-1: pam_authenticate failed: Authentication fa…

使用realsense t265测试svo2.0视觉里程计

毕业三年了&#xff0c;现在是第二份工作&#xff0c;第一份工作已经结束一年半了&#xff0c;这意味着&#xff0c;我有一年半的时间没有搞视觉SLAM相关的东西了&#xff0c;虽然在第二份工作也是做视觉相关的&#xff0c;但是只是用到一些目标识别和跟踪的知识&#xff0c;并…

JSP动作标识

jsp中include有两种形式: include指令&#xff1a;<% include file""%> include动作&#xff1a;<jsp:include page"" /> 他们的区别&#xff1a; <% include file""%>又称静态包含&#xff0c;使用时要注意以下几点&#xf…

面试必问之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令…

InfluxDB学习之InfluxDB的基本操作

InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。本文就为大家介绍一下InfluxDB的基本操作。 InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三种操作方式&#xff1a; 1&#xff09;客户端命令行方式…

运行svo 2.0的 vio时遇到opencv冲突的问题

当我运行如下指令时&#xff0c;遇到了如下问题 指令 cd svo_ws source ./devel/setup.bash roslaunch svo_ros euroc_vio_mono.launch rosbag play MH_01_easy.bag -s 50 运行时遇到的问题 OpenCV Error: Bad argument (Unknown interpolation method) in resize, file /b…