<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HqsHack的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/HqsHack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HqsHack]]></copyright><item><title><![CDATA[OpenGL加载和显示3D模型（MD2类型文件）- C/C++实现]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133154459</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133154459</guid><author>HqsHack</author><pubDate>Fri, 22 Sep 2023 01:17:37 +0800</pubDate><description><![CDATA[MD2是一种简单的三角网格模型文件格式，用于存储3D模型数据。我们将使用OpenGL的固定功能管线（Fixed Function Pipeline）来实现模型加载和渲染。在本文中，我们将学习如何使用OpenGL和C/C++编程语言加载和显示3D模型，特别是MD2（Quake II模型）类型的文件。我们将使用OpenGL进行图形渲染，并使用C/C++编写相关的代码。]]></description><category></category></item><item><title><![CDATA[Qt实现读写二进制文件（C++）]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133151121</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133151121</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 22:37:49 +0800</pubDate><description><![CDATA[当我们运行这个程序时，它将首先创建一个名为"binaryFile.bin"的二进制文件，并将数据写入该文件。然后，它再次打开该文件，并将数据读取出来，并输出到控制台上。通过读写二进制文件，我们可以有效地处理和存储二进制数据，例如图像、音频、视频等。通过这个示例程序，我们可以看到如何使用Qt来实现读写二进制文件的功能。然后，我们定义了三个变量，用于存储从文件中读取的数据：一个整数、一个双精度浮点数和一个字符串。然后，我们写入了三个不同类型的数据：一个整数、一个双精度浮点数和一个字符串。]]></description><category></category></item><item><title><![CDATA[使用C/C++绘制不规则多边形]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133148328</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133148328</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 20:55:33 +0800</pubDate><description><![CDATA[QT是一个跨平台的应用程序开发框架，提供了丰富的图形绘制功能。我们将使用QT的绘图类来创建一个窗口，并在窗口上绘制不规则多边形。在本文中，我们将介绍如何使用C/C++编程语言在屏幕上绘制不规则多边形。编译并运行上述代码，你将看到一个具有不规则多边形的窗口。在本例中，我们定义了一个五边形，具体的顶点坐标可以根据实际需求进行调整。通过本文，我们展示了如何使用C/C++和QT库来绘制不规则多边形。然后，我们设置画笔颜色为黑色，并设置填充颜色为蓝色。在上面的代码中，我们创建了一个自定义的。函数中，我们创建了一个。]]></description><category></category></item><item><title><![CDATA[OpenGL延迟渲染（OpenGL Deferred Shading）是一种在图形渲染中常用的技术，它能够提高渲染性能并支持更多的光源]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133147199</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133147199</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 20:22:45 +0800</pubDate><description><![CDATA[在几何阶段，我们将场景中的几何体渲染到一个称为G-buffer的缓冲区中，该缓冲区包含了每个像素的位置、法线、颜色等几何信息。在本文中，我们将介绍延迟渲染的基本原理，并提供一个使用C/C++编写的简单示例代码。函数中，我们首先初始化OpenGL和窗口。在主渲染循环中，我们先进行几何阶段的渲染，然后进行光照阶段的渲染，最后交换前后缓冲区。在上述代码中，我们首先定义了G-buffer的尺寸，并创建了用于存储位置、法线、颜色等信息的附件纹理（gPosition、gNormal和gAlbedoSpec）。]]></description><category></category></item><item><title><![CDATA[C++ 命令模式详解与示例]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133145124</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133145124</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 19:27:10 +0800</pubDate><description><![CDATA[命令模式使得请求的发送者和接收者解耦，并且可以通过不同的命令对象来参数化和传递请求。在本文中，我们将详细讨论命令模式的概念、结构和使用场景，并提供一个简单的示例来演示如何在 C++ 中实现命令模式。命令模式是一种将请求封装成对象的设计模式，它通过解耦请求发送者和请求接收者，使得代码更加灵活、可扩展和可维护。通过定义命令接口、具体命令类、请求接收者和命令发送者，可以轻松地实现命令模式。在上述示例中，我们通过创建具体的命令对象（TVOnCommand 和 TVOffCommand）来封装了电视机的开关操作。]]></description><category></category></item><item><title><![CDATA[OpenGL单点移动——一个角形的实例]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133142697</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133142697</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 18:19:46 +0800</pubDate><description><![CDATA[在本篇文章中，我们将使用OpenGL和C/C++编写一个简单的程序来展示如何在OpenGL中实现单点移动，并通过一个角形的实例来说明。当你编译并运行上述代码时，你将看到一个窗口打开，并在窗口中绘制一个移动的红色三角形。函数中，我们初始化OpenGL和GLUT库，并设置窗口的大小、位置和标题。函数中，我们使用OpenGL的函数调用来绘制一个红色的三角形，其中三个顶点的坐标是基于。函数中，我们更新点的坐标，并检查是否超出屏幕范围，如果超出则改变坐标变化量的方向。在上面的代码中，我们首先定义了全局变量。]]></description><category></category></item><item><title><![CDATA[C语言编写元数乘法程序]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133140175</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133140175</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 17:19:45 +0800</pubDate><description><![CDATA[该程序通过递归的方式实现了两个整数的乘法运算。函数中，我们使用了递归的思想来实现元数乘法。首先，我们判断递归终止的条件，即当。这样，程序就能够正确地计算出两个整数的乘积，并将结果输出给用户。作为参数传递给该函数，用于计算乘积。最后，将递归调用的结果取反作为乘积的结果返回。，分别用于存储用户输入的两个整数和计算结果。函数接收用户的输入，并将输入的值分别存储到。与递归调用的结果相加，作为乘积的结果返回。的值是正数还是负数来进行不同的计算。的值为0时，返回0作为乘积的结果。的相反数作为参数传递给递归调用的。]]></description><category></category></item><item><title><![CDATA[wxWidgets：wxPen类的使用方法]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133127370</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133127370</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 10:44:22 +0800</pubDate><description><![CDATA[wxPen是wxWidgets库中的一个类，用于在图形界面应用程序中绘制线条。它提供了各种方法和属性，用于设置线条的颜色、宽度和样式。本文将介绍wxPen类的用法，并提供相应的源代码示例。也可以在创建wxPen对象时指定颜色、宽度和样式等属性。在上面的示例中，首先创建了一个黑色、宽度为2像素、样式为实线的wxPen对象。方法绘制一条从(50, 50)到(200, 200)的直线。方法将该wxPen对象应用到绘图设备上。]]></description><category></category></item><item><title><![CDATA[使用C/C++的QHostInfo类]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133125484</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133125484</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 10:07:10 +0800</pubDate><description><![CDATA[在回调函数中，我们首先检查解析过程中是否有错误发生。如果解析成功，我们可以通过调用QHostInfo的addresses()函数获取解析得到的IP地址列表，并使用QHostInfo的hostName()函数获取主机名。在本篇文章中，我们将介绍如何使用C/C++中的QHostInfo类来执行主机名解析并获取相关信息。这是因为QHostInfo的解析是异步进行的，我们需要保持事件循环以确保回调函数被调用。通过使用QHostInfo类，我们可以方便地获取主机的IP地址、主机名和别名等信息，为网络操作提供了便利。]]></description><category></category></item><item><title><![CDATA[Hana库中的`boost::hana::template_`用法示例程序]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133121615</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133121615</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 08:28:47 +0800</pubDate><description><![CDATA[功能，我们可以在编译时动态地创建类型模板，并根据需要生成具体的类型。这为我们提供了更大的灵活性和通用性，使得在编写泛型代码时更加方便和简洁。这表明我们成功地创建了一个类型模板，并使用它生成了具体的类型，并通过对象访问了该类型的成员变量。该功能允许我们创建类型模板，并使用该模板生成具体的类型。在这个示例程序中，我们将介绍如何使用Hana库中的。请注意，这只是一个示例，实际的模板可以更加复杂。接下来，我们定义了一个简单的类型模板。接下来，我们使用创建的类型。的结构体类型，它具有一个。然后，我们使用类型模板。]]></description><category></category></item><item><title><![CDATA[使用boost::mpl模块实现打印相关的测试程序]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133119346</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133119346</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 06:49:52 +0800</pubDate><description><![CDATA[在上面的示例代码中，我们首先包含了一些必要的头文件，包括boost/mpl/at.hpp（用于访问类型列表中的元素）、boost/mpl/vector.hpp（用于定义类型列表）、boost/mpl/for_each.hpp（用于遍历类型列表）、boost/mpl/placeholders.hpp（用于占位符）和boost/type_traits.hpp（用于类型转换）。Boost是一个流行的C++库，提供了许多功能强大的模块，其中boost::mpl（元编程库）是其之一。，用于打印类型的名称。]]></description><category></category></item><item><title><![CDATA[OpenCV绘制斜矩形并截取区域ROI保存]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133118833</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133118833</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 06:27:35 +0800</pubDate><description><![CDATA[在本文中，我们将探讨如何使用OpenCV库在C/C++中绘制斜矩形，并从图像中截取感兴趣的区域（Region of Interest），然后将其保存到磁盘上。我们将会提供相应的源代码来演示这个过程。首先，确保你已经安装了OpenCV库，并且在你的C/C++项目中正确地包含了OpenCV的头文件。请注意，此示例中的矩形是通过定义四个角点的方式来绘制的。你可以根据自己的需求修改这些点的坐标来绘制不同形状和大小的矩形。希望本文对你理解如何在OpenCV中绘制斜矩形并截取ROI有所帮助。]]></description><category></category></item><item><title><![CDATA[使用boost::geometry::range_by_section的示例程序（C/C++）]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133116658</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133116658</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 04:47:05 +0800</pubDate><description><![CDATA[函数进行切割操作了。该函数接受点集合、切割后的子集合和切割参数作为参数，并将点集合按照指定的切割方式进行划分。最后，我们遍历每个切割区域，并输出其中的点。你可以根据自己的需求调整点集合、切割参数以及输出方式来适应不同的场景。接下来，我们创建了一个点集合，并添加了一些示例点。可以看到，点集合被成功切割成了三个区域，每个区域包含了相应的点。首先，我们引入必要的头文件，并定义了与示例相关的类型别名。函数能够按照指定的切割方式对点集合进行划分。接下来，我们定义了切割参数。表示每个切割区域的长度。]]></description><category></category></item><item><title><![CDATA[C++中boost::lambda模块实现右值测试]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133115728</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133115728</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 04:05:22 +0800</pubDate><description><![CDATA[接下来，我们使用boost::lambda::_1创建了一个函数对象isRvalue，它用于测试输入是否等于0。在上面的代码中，我们首先包含了必要的头文件，其中boost/lambda/lambda.hpp包含了boost::lambda的主要功能，boost/lambda/if.hpp包含了if_then_else函数的定义。在第二个测试中，我们使用std::move函数将value转换为右值引用，并将其作为参数传递给isRvalue函数对象。这证明了boost::lambda模块成功地实现了右值测试。]]></description><category></category></item><item><title><![CDATA[使用C++的QMimeData类]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133113608</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133113608</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 02:45:37 +0800</pubDate><description><![CDATA[本文将详细介绍QMimeData类的使用，并提供相应的源代码示例。QMimeData类的使用非常灵活，可以根据应用程序的需求设置和获取不同类型的数据。通过熟练掌握QMimeData类的使用，您可以更好地处理数据的传递和交互。在上述示例中，我们创建了一个QMimeData对象，并将其设置为拖放操作的数据。然后，我们创建了一个QDrag对象，并将QMimeData对象设置为拖放对象的数据。一旦设置了数据，可以将QMimeData对象传递给其他Qt组件，如剪贴板或拖放操作。如有任何疑问，请随时提问。]]></description><category></category></item><item><title><![CDATA[OpenCV几何变换的实例 - C/C++]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133110336</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133110336</guid><author>HqsHack</author><pubDate>Thu, 21 Sep 2023 01:20:58 +0800</pubDate><description><![CDATA[在计算机视觉领域，几何变换是一种常见的操作，可以对图像进行旋转、缩放、平移和透视变换等。OpenCV是一个广泛使用的计算机视觉库，提供了丰富的函数和方法来实现这些几何变换。图像平移是一种常见的几何变换，可以将图像沿着指定的方向进行平移。你可以根据自己的需求和具体场景，选择适合的几何变换方法，并使用OpenCV提供的函数来实现。图像旋转是一种常见的几何变换，可以将图像按照指定的角度进行旋转。透视变换是一种常见的几何变换，可以将图像投影到一个新的视角中。图像缩放是一种常见的几何变换，可以改变图像的尺寸。]]></description><category></category></item><item><title><![CDATA[CUDA：使用纹理内存进行卷积操作的示例（C/C++）]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133106679</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133106679</guid><author>HqsHack</author><pubDate>Wed, 20 Sep 2023 23:11:45 +0800</pubDate><description><![CDATA[然后，它使用嵌套的循环遍历卷积核的每个元素，将输入图像的对应像素值与卷积核的权重相乘，并将结果求和。然后，我们分配设备内存，并将输入数据从主机内存复制到设备内存。通过利用GPU的并行计算能力和纹理内存的高带宽访问特性，可以加速卷积操作的执行。这里我们使用16x16的线程块大小，并根据输入图像的尺寸计算出网格的大小。执行完卷积操作后，我们将结果从设备内存复制回主机内存，并打印输出结果（仅打印前10个元素）。核函数，将输入图像和输出图像的设备内存指针以及图像的宽度和高度作为参数传递。]]></description><category></category></item><item><title><![CDATA[警报应用程序的实现（C/C++）]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133103191</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133103191</guid><author>HqsHack</author><pubDate>Wed, 20 Sep 2023 21:56:47 +0800</pubDate><description><![CDATA[警报应用程序是一种常见的应用程序类型，用于提醒用户在特定事件发生时发出警报。在本文中，我们将使用C/C++编程语言来实现一个简单的警报应用程序。首先，我们需要创建一个C/C++项目，并包含必要的头文件。请注意，上述示例是一个简单的警报应用程序的基本实现。根据您的需求，您可以对其进行扩展，例如添加更复杂的警报操作、用户界面等。然后，我们可以在警报时间到达时播放声音或执行其他警报操作。程序将提示您输入警报时间，然后在指定的时间间隔后触发警报。函数中，我们首先提示用户输入警报时间，并将其存储在。]]></description><category></category></item><item><title><![CDATA[使用C/C++绘制大规模散点图]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133100281</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133100281</guid><author>HqsHack</author><pubDate>Wed, 20 Sep 2023 20:45:36 +0800</pubDate><description><![CDATA[由于数据量较大，我们需要使用高效的算法和数据结构来存储和处理数据。在本文中，我们将探讨如何使用C/C++绘制百万级别的散点图，并提供相应的源代码。当然，在实际应用中，你可能需要根据自己的需求进行优化和调整，以满足性能和可视化效果的要求。在这个函数中，我们使用了C++的随机数生成器来生成指定数量的随机数据点。接下来，我们创建一个800x800像素大小的图形窗口，并设置窗口标题为"Scatter Plot"。在这个示例中，我们使用了SFML库来进行图形绘制操作。在这个示例中，我们首先定义了要绘制的数据点数量。]]></description><category></category></item><item><title><![CDATA[C++实现高精度除法]]></title><link>https://blog.youkuaiyun.com/HqsHack/article/details/133095325</link><guid>https://blog.youkuaiyun.com/HqsHack/article/details/133095325</guid><author>HqsHack</author><pubDate>Wed, 20 Sep 2023 19:14:08 +0800</pubDate><description><![CDATA[在进行除法运算时，如果被除数或除数是一个非常大的数，常规的整数或浮点数类型可能无法精确表示结果。为了解决这个问题，我们可以使用高精度算法来实现精确的除法运算。高精度除法的核心思想是模拟手工长除法的过程。我们将被除数逐位地除以除数，并按照长除法的规则计算商和余数。为了方便计算，我们可以使用字符串来表示大整数，并且使用数组或向量来存储每一位的数字。的函数，它接受一个表示被除数的字符串和一个整数作为除数。函数通过模拟长除法的过程逐位计算商，并将商存储在一个字符串中。最后，我们通过去除商前导零的方式得到最终的商。]]></description><category></category></item></channel></rss>