gpt4 book ai didi

c++ - 对从文件读取到结构中的结构感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:15 24 4
gpt4 key购买 nike

所以我正在尝试用 C++ 编写一小段代码,它将读取一个文件(顶点、vect 法线、顶点纹理坐标和面(v/vt/vn v/vt/vn v/vt/vn) 等 ),我有点迷失了自己。

我从小开始,只读取一个只有顶点、颜色和面的立方体,但现在我掌握了一个更高的多边形模型(126 个面),其中面的描述不同(之前有没有 vect normasl 或 vert 纹理),所以我认为结构中的结构是存储此信息的好方法。

inFile >> NUM_POLY;
indices = new polygon[NUM_POLY];
for (int i=0; i < NUM_POLY; i++)
{
inFile >> indices[i].a;
inFile >> indices[i].b;
inFile >> indices[i].c;
}

这是我目前的代码,使用旧系统,但我将结构更改为...

struct vertA {
int v;
int vt;
int vn;
};

struct vertB {
int v;
int vt;
int vn;
};

struct vertC {
int v;
int vt;
int vn;
};

struct polygon {
struct vertA;
struct vertB;
struct vertC;
};

所以让我感到困惑的是我如何将前 3 个整数存储到 vertA 结构中,接下来的 3 个存储在 vertB 中,然后是 vertC 并再次循环直到文件结束...

如果有人能提供帮助,那将是非常感谢!

最佳答案

这是错误的

struct polygon {
struct vertA;
struct vertB;
struct vertC;
};

我猜你的意思是

struct polygon {
vertA va;
vertB vb;
vertC vc;
};

那就很简单了(假设我没看错)

for (int i=0; i < NUM_POLY; i++)
{
inFile >> indices[i].va.v;
inFile >> indices[i].va.vt;
inFile >> indices[i].va.vn;
inFile >> indices[i].vb.v;
inFile >> indices[i].vb.vt;
inFile >> indices[i].vb.vn;
inFile >> indices[i].vc.v;
inFile >> indices[i].vc.vt;
inFile >> indices[i].vc.vn;
}

您的代码中有一件奇怪的事情是 struct vertAstruct vertB 以及 struct vertC 都是相同的。所以也许您不需要三个不同的结构。

关于c++ - 对从文件读取到结构中的结构感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16022685/

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