【OpenGL】CPP读取STL文件 含读入优化 二进制 ASCII

参考文献:C++读取STL模型文件

在这里插入图片描述

1. 前言

上一篇博客介绍了如何读取基于ASCII格式储存的STL三维模型文件,并用OpenGL进行了显示。

由于ASCII文件格式有大量用于标记格式的字符串,例如outer loopendloop等等,当三角形面片的个数达到数万个,这样的格式会产生大量的无效信息。因此,不少CAD在导出STL模型文件时,都会默认采用二进制格式

我们再来复习一下二进制格式的STL文件结构:

UINT8//Header//文件头,共80字节,存贮文件名;  
UINT32//Numberoftriangles//4个字节的整数描述三角面片数量  
//foreachtriangle(每个三角面片中占用50字节)  
REAL32[3] //Normalvector//法线矢量,3个4字节浮点数  
REAL32[3] //Vertex1//顶点1坐标,3个4字节浮点数  
REAL32[3] //Vertex2//顶点2坐标,3个4字节浮点数  
REAL32[3] //Vertex3//顶点3坐标,3个4字节浮点数  
UINT16//Attributebytecountend//二个字节,文件属性统计  

2. 程序

2.1 读入优化(先读入内存缓冲区)

这一次,我们希望能够兼顾二进制格式和ASCII格式的STL文件的读取,并加入一定的读入优化,来提高程序运行的速度。把文件读入内存缓冲区是一种常见的优化方法。

void STL_Read()
{
   
    int stl_i;//STL_Read子函数中的for循环用到的变量
    int triangle_num;//三角形面片的个数
    long fileSize
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值