首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换.obj面向OpenGL的变量

转换.obj面向OpenGL的变量
EN

Stack Overflow用户
提问于 2015-04-14 12:26:06
回答 1查看 556关注 0票数 1

据我所知,OpenGL不支持所需的每个面的属性引用。我已经决定使用.obj文件的材料文件,并且已经成功地将它们加载到我的项目中。然而,我认为材料是按对象组使用的,我意识到.obj格式实际上可以使用每个面的材料。因此,顶点组(或者说网格组)可以有多个特定面的材料。

我将能够转换小的变量,如镜面等,到每个顶点,但整个材料可以不同的面对面;照明,环境,镜面,纹理地图(漫射法线等)。这将是很容易的,如果材料是每个网格,以便我可以加载他们作为子网格和附加相应的材料在他们。

,我要如何处理一个网格中的多个材料,其中的材料在其中的各个面之间分布不均匀?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 15:20:23

首先,这些表面材料的价值是什么?因为,除非您能够在一次传递中呈现它们,否则您还是可以将它们分割成不同的网格。如果使用索引缓冲区,那么只需使用其中的几个,每个材料一个。然后,您可以为每种材料类型设置制服/更换着色器。

我的渲染器的工作方式:

代码语言:javascript
复制
iterate through meshes
    bind mesh's vertex array object
    bind mesh's uniform buffer object
    iterate through mesh's materials
        use shaders, bind textures, set uniforms...
        draw material's index buffer with glDrawElements

当然,你不想为每一种材料更换着色器,所以如果你确实需要使用多个着色器,而不仅仅是更换制服,那么你就需要把它们分批在一起。

这并不是指obj/mtl,而是任何网格/材料格式。

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

https://stackoverflow.com/questions/29627298

复制
相关文章

相似问题

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