gpt4 book ai didi

c++ - OpenGL-从外部文件绘制点

转载 作者:行者123 更新时间:2023-12-02 10:22:41 26 4
gpt4 key购买 nike

AM试图从CSV文件中绘制一些点。由于文件大小较大(> 2GB),因此将文件内容加载到 vector std::vector<std::vector<std::string> >parsedCsv中会导致内存不足异常。

因此,我想,可以将文件直接从CSV进行绘制,而不是将文件读取为 vector 然后进行绘制。我正在寻找下面对glVertex3f(x,y,z)的修改

    std::ifstream  data("D:\\Files\\Dummy2.csv");
std::string line;
while (std::getline(data, line))
{
std::stringstream lineStream(line);
std::string cell;
std::vector<std::string> parsedRow;
while (std::getline(lineStream, cell, ','))
{
glBegin(GL_POINTS);
glColor3f(0.0f, 1.0f, 1.0f);
glVertex3f(----how to represent the points--?)
glEnd();
}

CSV文件已经具有所需的格式:
x1,y1,z1    
x2,y2,z2
x3,y3,z3
-------
----
--

有什么建议么 ?

最佳答案

您可以使用 stof 将字符串值转换为浮点数。将单元格编号推送到 vector 。顶点顶点坐标的分量存储在vector中,可以由 glVertex3fv 绘制:

std::ifstream data("D:\\Files\\Dummy2.csv");
std::string line;
while (std::getline(data, line))
{
std::stringstream lineStream(line);

std::string cell;
std::vector<float> parsedRow;
while (std::getline(lineStream, cell, ','))
parsedRow.push_back(std::stof(cell));

if (parsedRow.size() == 3)
{
glBegin(GL_POINTS);
glColor3f(0.0f, 1.0f, 1.0f);
glVertex3fv(parsedRow.data());
glEnd();
}
}

注意,如果 stof无法执行转换,则将引发无效的参数异常。

关于c++ - OpenGL-从外部文件绘制点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59410498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com