我想在OpenGL中画一条线,它会经常收到新的点。 我想要实现的是一个对象在他后面画一条线。
所以我必须创建一个数组并将所有新点附加到它(BufferData设置为GL_DYNAMIC_DRAW)。然后用glDrawArrays重绘该行。 Tesselation +笔画宽度将在顶点着色器内?
或者有更好的方法吗?
答案 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)。满容易 ?不是吗?让我画出我的结果:
结果(用wasd控制):