首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将三维模型转换为OpenGL固定流水线表示

如何将三维模型转换为OpenGL固定流水线表示
EN

Computer Graphics用户
提问于 2018-04-24 09:44:57
回答 2查看 1K关注 0票数 0

我在Solidworks中有一个CAD模型(可以转换为STL、OBJ、STEP、VRML等)。我需要在一个旧的应用程序中呈现,该应用程序仍然使用固定管道。

理想情况下,我希望将我的模型转换成一系列glMaterialfvglBeginglVertex3fglEnd命令,这些命令可以直接编译到C库中,这样就可以避免从外部文件加载数据。但是,如果这种方法太痛苦,也许有人可以建议我可以嵌入到代码中的开源轻量级固定管道模型呈现器。

EN

回答 2

Computer Graphics用户

回答已采纳

发布于 2018-04-27 12:49:30

正如注释中指出的那样,最简单的方法是遍历一个顶点数组,这是OpenGL中固定的和可编程的管道所支持的。

请求一个固定管道解决方案的动机很简单:这就是现有的代码库所使用的!目前,代码库没有导入模型的方法,代码库中已经存在的模型已经使用一系列固定管道OpenGL函数调用进行了手工编码。

综上所述,我相信最好的工作流程(以及这个问题的答案)如下:

  1. 将CAD模型导出为波形OBJ格式
  2. 将此开放源码OBJ查看器的固定管道呈现实现集成到代码库中。
票数 -2
EN

Computer Graphics用户

发布于 2018-04-24 11:01:22

您可以将其编译为

代码语言:javascript
运行
复制
Vertex vertices[] = {{posx, posy, posz, texu, texv, ..}, 
                     {posx, posy, posz, texu, texv, ..}, 
                     //...
                    }

然后绕过去:

代码语言:javascript
运行
复制
glBegin(GL_TRIANGLES);
for (int i = 0; i < arraycount(vertices); i++){

    glTexCoord2f(vertices[i].texu, vertices[i].texv);
    //... 
    glVertex3f(vertices[i].posx, vertices[i].posy, vertices[i].posz);
}
glEnd();

另一种解决方案是通过创建VertexAttributeLayout结构并设置它来模拟基于现代顶点缓冲区的解决方案。然后在循环中解释布局结构,并根据需要解释数据。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/7548

复制
相关文章

相似问题

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