2015-11-06 149 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