【问题标题】:Highlight specific parts of a mesh c++ OpenGL突出显示网格 c++ OpenGL 的特定部分
【发布时间】:2014-08-29 07:48:51
【问题描述】:

我已将一个网格对象(来自搅拌机的 .obj 文件)导入到 openGl 窗口 (glfw) 上下文中。我正在关注各种关于 3D 拾取的教程,以便我选择它。我无法理解的是,如何让网格的子部分在单击某一点时突出显示。例如,一个汽车网格,如果您在其中单击门,则整个门都会突出显示。在不涉及游戏引擎的情况下,因为我的目的是将这个概念应用于应用程序中的 3d 图表,所以最直接的实现方式是什么。

PS -- 在有人对此投反对票之前,我已经在谷歌上花费了数小时试图寻找答案,如果这离题/不合适,我深表歉意。

【问题讨论】:

  • 这是一个单一的网格,还是您正在处理代表汽车不同部分(门等)的多个网格?如果可能,请发布您的顶点和片段着色器源。
  • 如果你创建了一辆汽车的零件,如:门、镜子、车顶、轮胎等。然后你可以在类对象示例中实现一个函数,门对象响应鼠标点击和执行功能,例如:油漆、颜色或开门功能。
  • 我想我会导入几个与主网格的不同可选部分相对应的对象,然后从那里取出,谢谢。

标签: c++ opengl


【解决方案1】:

网格具有顶点颜色或纹理形式的一些颜色信息。要突出显示部分网格,您需要更改使用的顶点数组或纹理的颜色信息。生成所需的数组和纹理可能是昂贵的 cpu 操作,但是在生成数据后,将其传送到屏幕不会花费任何时间。主要的复杂性在于修改网格的数据结构。

【讨论】:

  • 将颜色作为制服发送到该网格的着色器不是更容易吗?那么你就不必在 CPU 上做任何修改了。
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2011-09-15
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 2019-09-24
相关资源
最近更新 更多