opengl如何绘制动态线?

时间:2015-11-06 16:35:34

标签: opengl line draw

我想在OpenGL中画一条线,它会经常收到新的点。 我想要实现的是一个对象在他后面画一条线。

enter image description here

所以我必须创建一个数组并将所有新点附加到它(BufferData设置为GL_DYNAMIC_DRAW)。然后用glDrawArrays重绘该行。 Tesselation +笔画宽度将在顶点着色器内?

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

晚安:)

稍等休息后好吧。我终于找到了解决方案,想要分享它: 想法是在给定的延迟之后绘制当前位置的点。时间延迟定义了实际线路的平滑程度。然后,您将必须根据绘制的定位点计算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

对象,你将每帧上传那两个点(gl.glBufferSubData)。满容易 ?不是吗?让我画出我的结果:

Sketch

结果(用wasd控制):

With Wireframe on

bigger time delay

small delay