opengl如何绘制动态线?
opengl how to draw a dynamic line?
我想在 OpenGL 中画一条线,它经常会收到新的点。
我想实现一个在自身后面画一条线的对象:
所以我必须制作一个数组并将所有新点附加到它(BufferData
设置为 GL_DYNAMIC_DRAW
)。然后用 glDrawArrays
重新画线。 Tesselation + 笔划宽度将在 vertexshader
?
内
或者有更好的方法吗?
想法是在给定延迟后绘制当前位置的一个点。时间延迟定义了实际线路的平滑程度。然后你将不得不根据绘制的定位点计算 2 个新点,这两个点都乘以给定的宽度。
对于这些图,您还必须获得对象的运动方向才能计算出正确的法线。
在 OpenGl 端,您必须初始化一个 fixed-sized 顶点缓冲区
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
)。
我的结果:
结果(用wasd控制):
我想在 OpenGL 中画一条线,它经常会收到新的点。
我想实现一个在自身后面画一条线的对象:
所以我必须制作一个数组并将所有新点附加到它(BufferData
设置为 GL_DYNAMIC_DRAW
)。然后用 glDrawArrays
重新画线。 Tesselation + 笔划宽度将在 vertexshader
?
或者有更好的方法吗?
想法是在给定延迟后绘制当前位置的一个点。时间延迟定义了实际线路的平滑程度。然后你将不得不根据绘制的定位点计算 2 个新点,这两个点都乘以给定的宽度。
对于这些图,您还必须获得对象的运动方向才能计算出正确的法线。
在 OpenGl 端,您必须初始化一个 fixed-sized 顶点缓冲区
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
)。
我的结果:
结果(用wasd控制):