如何解决如何在OpenGL中渲染拉伸弯曲的轨道几何
我希望渲染看起来像弯曲的轨道或管子的东西。 我有一个横断面,该横断面由大约400个顶点组成,这些顶点形成一个循环,即该横断面。
我还有大约3000个点和方向的数组,它们描述了每个横截面应该去的位置及其方向。
总共约有1,200,000个顶点。
每个顶点是相应的横截面顶点乘以方向矩阵加偏移量。
现在,我想在每对定向轮廓上缠绕一个三角形带。
每个三角形带将由800个顶点组成。
python代码看起来或多或少是这样的(只是示例,可以使您理解):
For N in range(NumberOfCrossSections-1):
StartNewTriangleStrip()
For I in range(NumberOfVerticesInProfile):
Vertex = CrossSectionOrientation[N] * ProfileVertex[I] + Offset[N]
VertexArray.append(Vertex)
Vertex = CrossSectionOrientation[N+1] * ProfileVertex[I] + Offset[N+1]
VertexArray.apppend(Vertex)
DrawTriangleStrip(VertextArray)
我想在着色器中完成所有这些工作。
我认为我想创建两个缓冲区,一个具有所有轮廓顶点,另一个具有方向/偏移。
当然,有一个全局尺度和方向矩阵可以应用于整个对象(一次一个顶点)
所以我的实际问题是“如何在着色器中实现此目标?”
我认为我想使用实例,但是我不知道如何使用。
我最受困扰的部分是如何在顶点着色器中的两个方向矩阵之间进行乒乓操作。
配置文件数组和Orientaions数组不实时更改。因此,我想我可以在python中创建一个包含所有1,000个顶点的缓冲区,并将其传递给着色器。
但是我仍然需要经常告诉着色器开始一个新的三角带。
然后,着色器将负责将每个顶点乘以视图比例和方向矩阵(它们会实时更改)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。