【问题标题】:how to use assimp by fixed function pipeline?如何通过固定功能管道使用assimp?
【发布时间】:2018-11-15 06:18:02
【问题描述】:

我已经学会了如何通过着色器使用 assimp 导入 .obj 但是,是否可以通过固定功能管道导入带有 assimp 的 .obj。 这样我就可以轻松地使用OpenGL API进行编程了。

【问题讨论】:

  • 如果“容易”是指“使用我已经知道的东西”,那么根据定义,你已经知道如何用你需要的东西(法线、顶点颜色、纹理坐标、纹理、 ...)。如果不是这样,那么我并没有真正得到问题,因为着色器应该更容易学习,并且在当前硬件上几乎是必需的。似乎是什么问题?您的代码的哪一部分与您使用 FFP 的意图根本矛盾(无论其原因是什么)?
  • 我想将模型/视图/投影转换与固定功能管道一起使用,但要使用着色器渲染 .obj 模型。所以我想通过固定功能管道导入.obj!
  • 对不起,你说的对我来说毫无意义。您可以使用 FFP 或可编程管道。我不知道如何“通过 FFP”或“通过着色器”“导入”。

标签: opengl assimp wavefront


【解决方案1】:

两者之间不应有显着变化,通过假设您应该获得独立于 opengl 的顶点位置、法线和 UV 坐标。

将会改变的是您不会使用 VAO/VBO,但您必须“手动”发送每个顶点属性 和 glTexCoord2dv(your uv) glNormal3dv( your normal) glVertex3dv( your vertex)

对于你的每个脸和顶点。

编辑:

波前对象格式每个顶点仅使用一组 UV 坐标,因此您的所有纹理都将使用相同的 UV 贴图。如果您有使用多个 UV 贴图的纹理,您应该查看另一种格式,例如 .fbx 。但是这些东西与固定/可编程管道无关。一旦通过 assimp 导入文件,您就完成了。所有这些更改都是用于发送数据的函数。此外,obj 文件的材质数据非常有限,因此您所拥有的只是使用的纹理名称及其通道。由于材质与您的渲染管道密切相关,因此信息总是会丢失。

【讨论】:

  • glVertexPointer/glDrawElements 听起来更健康。 VBO 应该算作 FFP,它们并没有真正的相关性。
  • 谢谢!例如,.obj 文件中有“usemtl ***”语句。但是,在 glTexCoord2dv(your uv) 中,uv 坐标来自哪里?哪些纹理?我似乎对“usemtl ***”一无所知,这让我很困惑。
  • 谢谢!我需要更深入地了解 FFP 和 assimp。
  • @W.X.Qiang 是的,您的问题与渲染管道无关,更容易看到您拥有的和想要拥有的代码示例。还有为什么你需要把所有东西都转换成 1.2 OGL
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 2021-10-05
  • 2016-07-06
相关资源
最近更新 更多