我想用球体和圆柱渲染弹簧。每个气缸的两端各有两个球体,所有气缸沿弹簧中心线放置。我可以做到这一点..渲染是好的。我现在正在使用gluSphere和gluCylinder。
现在,当我看到表演时,它的表现并不好,非常慢。所以我想知道以下是否可能:
我是否可以组合球体和圆柱体的表面并仅渲染外壳而不是球体的内部覆盖部分......?
我也读过VBO ..是否可以将gluSphere和gluCylinder与VBO一起使用..? 我无法使用显示列表,因为弹簧的属性不断变化......!
任何人都可以提出更好的建议吗?
答案 0 :(得分:3)
您可能想重新考虑绘制弹簧的方式。在我看来,有两种有效的方法。
使用Assimp或其他一些易于与OpenGL集成的模型加载软件加载弹簧模型。可以在Turbo Squid或通过Google的3D仓库(在Google Sketch-Up中)找到免费的3D模型。
纯粹在OpenGL中绘制对象。使用后固定功能OpenGL管道绘制此类对象的惯用方法是绘制体积3D线。您绘制的线越多,您的弹簧曲率就会越多,这会牺牲渲染时间。
对于绘制弹簧,我建议您定义一组定义弹簧形状的点(具有相邻性),并使用基本类型GL_LINE_STRIP_ADJACENCY绘制这些点。然后,在着色器程序中使用几何着色器将此像素绑定线条扩展为由三角形条带组成的一组体积3D线。
This博文可以很好地描述该技术。
答案 1 :(得分:1)