首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenGL (流式3D模型?)加载一系列3D模型。

使用OpenGL (流式3D模型?)加载一系列3D模型。
EN

Stack Overflow用户
提问于 2022-04-11 00:15:56
回答 1查看 218关注 0票数 -1

我的应用程序生成了一个3D模型流,比如.obj格式。每个模型都是一个具有纹理的三维网格。我想知道如何使用OpenGL显示/可视化三维模型流。我的想法只是按顺序加载3D模型,但我不知道如何实现。

EN

回答 1

Stack Overflow用户

发布于 2022-04-11 03:51:31

  1. 您将需要从obj文件加载3D模型的代码。要么自己写,要么在线找到一个实现。搜索例如"obj模型解析c++“。 有关obj格式的更多信息,请参见此处:维基百科-波前.obj文件
  2. 每个模型都应该加载到这样一个类的实例中:
代码语言:javascript
运行
复制
class Model
{
public:
    bool LoadObj(std::string const & filename);
     
    using VertexPosition = std::array<float, 3>;
    std::vector<VertexPosition> const &  GetVerticesPositions();
     
    using VertexColor = std::array<unsigned char, 4>;
    std::vector<VertexColor> const & GetVerticesColors();
    
    using FaceIndices = std::array<int, 3>;
    std::vector<FaceIndices> const & GetFacesIndices();
    
    using VertexUV = std::array<float, 2>;
    std::vector<VertexUV> const & GetVerticesUVs();
     
    int GetTextureWidth();
    int GetTextureHeight();
    unsigned char const * GetTextureData();
     
    // etc...
};
  1. 所有模型都可以存储在std::vector<Model>中。
  2. 您的应用程序应该有一个呈现的计时器。每次您需要渲染一个框架时,您需要根据所传递的时间和每秒的帧来确定要呈现的模型。当您选择一个模型时,您可以使用Model接口来呈现它。
  3. 如果您有许多模型,并且不希望需要太多内存,则可以执行延迟加载(仅在您需要时才从文件加载)。这种技术需要预先在一个单独的线程(即缓冲)上加载一些帧。否则,您的播放将不顺利,因为您将需要等待加载obj文件,这可能需要一些时间。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71821524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档