c++ - 如何动态地为 3d 对象着色/纹理化?

标签 c++ opengl rendering 3d

我有一个 3D 模型,由三角形组成。我想要做的是,给定模型附近的一个点,我想将模型(三角形)着色为另一种颜色,比如蓝色。

现在,我有一个关于模型的边界球体,当碰撞发生时,我只想对模型中发生碰撞的部分进行近似着色。

有人可以向我推荐一些我可以使用并实现这一目标的东西吗?

谢谢

最佳答案

如果你只有一个或少量的点来测试,最快的渲染方法可能是在 GLSL 中编写一个着色器,它根据到你的点的世界空间距离有条件地修改片段颜色).

如果您从未进行过 GLSL 编程,则可能更简单的替代方法是使用顶点数组并维护从三角形顶点到索引顶点数组的坐标的映射;然后您可以获取触发碰撞测试的任何顶点,并在每一帧上手动修改它们的相关颜色数据。

关于c++ - 如何动态地为 3d 对象着色/纹理化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331819/

相关文章:

c++ - 10.6.8 上 Xcode 中 Cinder 教程早期的 getOpenFilePath 错误

c++ - 第一次尝试 - 图形程序

ruby-on-rails - 如何将一些参数传递给默认渲染方法?

OpenGL - 缓冲区、着色器

c++ - 如何使用 OpenCV 计算 2 帧之间的旋转平移矩阵

c++ - 是否有一个宏来检查给定函数是否存在

c++ - 生成当前获胜的随机数 : CPU vs GPU,?

opengl - 如何将 "add"深度信息发送到主帧缓冲区

opengl - glTexImage2D函数中的border是什么意思?

c++ - OpenGL 顶点缓冲区渲染不正确