基于VC++和OpenGL的STL文件读取与显示实践

需积分: 49 190 下载量 112 浏览量 更新于2024-08-10 收藏 3.65MB PDF 举报
"这篇文章主要介绍了如何在Qt 5.15.0中处理qrand函数被替换为qrandomgenerator的问题,以及如何使用C++和OpenGL读取与显示STL文件的实践经验。" 在Qt 5.15.0中,`qrand()`函数被废弃并替换为`QRandomGenerator`类,这是为了提供更高效和更安全的随机数生成。`qrand()`全局函数的使用被鼓励改为使用线程局部的`QRandomGenerator`实例。要解决这个问题,你需要按照以下步骤进行: 1. 引入`<QRandomGenerator>`头文件。 2. 使用`QRandomGenerator::global()`获取全局随机数生成器,或者在特定线程中使用`QThreadStorage<QRandomGenerator>`来存储线程局部的随机数生成器。 3. 用`QRandomGenerator::bounded()`或`nextInt()`方法来生成随机数。例如,如果你之前用`qrand() % upperLimit`生成0到`upperLimit-1`的随机数,现在可以改写为`QRandomGenerator::global()->bounded(0, upperLimit)`。 在STL文件的读取与显示方面,文章详细描述了如何使用C++的标准输入输出库(IO流,iostream)和字符串库(string)来处理STL文件。首先,创建一个`ifstream`对象并绑定到STL文件,然后通过`getline()`函数逐行读取文件内容。STL文件由一系列的三角面片组成,每个面片包含三个顶点,每个顶点由三个坐标(x, y, z)定义。在代码中,定义了一个名为`Vertex`的类来存储这些顶点信息。 为了读取STL文件,文章介绍了一个名为`VertexReader`的类,它包含了读取文件并解析顶点信息的函数。在读取过程中,需要识别关键词"Vertex",然后提取随后的坐标数据。当遇到"Vertex"时,读取接下来的三个双精度浮点数(double)分别作为x, y, z坐标。读取完成后,这些顶点信息可以被传递给OpenGL来绘制三角面片。 OpenGL是一个用于渲染2D和3D图形的应用编程接口(API),在这里用于显示STL文件中的三角面片。通过OpenGL的绘图函数,可以将读取到的顶点数据转换为屏幕上的几何形状。在C++中,通常使用GLUT或GLEW库来简化OpenGL的使用,并与IO流库配合,完成从STL文件到屏幕的显示过程。 文章提供了从STL文件读取数据和使用OpenGL进行可视化的基本步骤,这对于进行3D建模、逆向工程和其他相关领域的工作至关重要。通过理解和应用这些技术,开发者可以处理STL文件并创建交互式3D应用程序。