繁体   English   中英

具有相同数据但类型不同的两个向量

[英]Two vectors with same data but different types

我正在执行流程可视化任务,需要以某种方式分析数据。 该可视化由其他人编写,并且期望包含数据的GLFloat向量。 但是,我更喜欢具有如下所示的类结构。 有什么方法可以在不复制数据的情况下实现此目的(例如联合)?

struct Vertex
{
    math::vec3 pos;
    float time;
    float velocity;
};

class Pathline
{
    std::vector<Vertex> points;
};

//these have the same data
std::vector<Pathline> lines;
std::vector<GLfloat> lineData;

谢谢

从您的示例中,我想到了几个问题:

  • GLfloat不需要与float兼容。
  • 您不知道您拥有多少条路径线,因此您可能拥有3条2个顶点的路径线,或6条1个顶点的路径线,或任何其他组合。
  • std :: vector不能确保5 GLfloat的倍数,因此您的转换基于此语义约束。
  • 类/结构通常由编译器对齐,这意味着您的Vertex可能超出预期。

可能您可以将您的结构改写为以下内容:

struct Vertex
{
    GLfloat[3] pos;
    GLfloat time;
    GLFloat velocity;
};

std::vector<Vertex> lineVertexData;
std::vector<GLfloat> lineData;

而且,如果您还有其他外部数据来定义路径,则可以再走一步。

一切都取决于您要完成“哲学上正确的” C ++代码的程度。 有时候用OpenGL很难实现。

一旦两个结构等效,就可以在它们之间转换指针/引用。 但是,这种等效并不容易。

回答您的问题:

  • 可能吗? 否与您当前的代码。
  • 进行一些更改是否可能? 是的,即使不建议这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM