opengl如何画动态线?

Sen*_*ns4 5 opengl line draw

我想在 OpenGL 中画一条线,它经常会收到新的点。

我想实现一个在其自身后面画一条线的对象:

在此输入图像描述

那么我是否必须创建一个数组并将所有新点附加到它(BufferData设置为GL_DYNAMIC_DRAW)。然后用 重新绘制线条glDrawArrays。镶嵌+笔划宽度将在vertexshader

或者,还有更好的方法?

Sen*_*ns4 5

这个想法是在给定的延迟后绘制当前位置的点。时间延迟定义了实际线路的平滑程度。然后,您将必须根据绘制的定位点计算 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
Run Code Online (Sandbox Code Playgroud)

您将在其中上传每帧这 2 个点 ( gl.glBufferSubData) 的对象。

我的结果:

草图

结果(用 wasd 控制):

线框打开

较大的时间延迟

小延迟