2015-11-06 150 views
4

我想在OpenGL中绘制一条线,它会经常收到新的点。 我想要实现的是一个物体在他身后画一条线。opengl如何绘制动态线条?

enter image description here

所以,做我必须做的一个阵列,所有新的点追加到它(BufferData设置为GL_DYNAMIC_DRAW)。然后用glDrawArrays重画这一行。 Tesselation + stroke的宽度将在vertexshader内部?

或者还有更好的方法吗?

回答

2

晚上好:)

好一点休息。我finnaly来到一个解决方案,并希望分享它: 这个想法是在给定的延迟后绘制当前位置的一个点。时间延迟定义了实际线路的平滑程度。然后,您将不得不根据绘制的定位点计算2个新点,这两个点都将乘以给定的宽度。

哦,对于那些情节,你也必须得到你的对象的运动方向来计算正确的法线。

在OpenGL的侧则必须初始化固定大小顶点缓冲器

gl.glBufferData(gl.GL_ARRAY_BUFFER, 8 * self.maxPoints, None, gl.GL_DYNAMIC_DRAW) 
# 8 bytes 2 points = 1 plot 
# maxPoints amount of max plots 

对象您上传每一帧的那些2个点(gl.glBufferSubData)。挺容易 ?不是?让我画我的结果:

Sketch

结果(用WASD控制):

With Wireframe on

bigger time delay

small delay