OpenGL跟踪一对3D线之间的最小距离点
我试图在OpenGL中执行以下操作:有两个3D点p1和p2,比如在位置(-1,0,0)和(1,0,0)处。通过这两个点绘制一条三维线。假设两条直线的方向向量都是(0,0,1)。我想跟踪两条线之间最小距离的点,并在这些线围绕点p1和p2围绕随机轴旋转小角度时显示它们 我是OpenGL新手,对线之间最近点的计算应该在哪里进行感到非常困惑。如果通过提供端点绘制两条线,则无法在几何体着色器中进行计算,因为它只能访问一个基本体,而我需要两条线来计算最近的点OpenGL跟踪一对3D线之间的最小距离点,opengl,3d,geometry,pyopengl,Opengl,3d,Geometry,Pyopengl,我试图在OpenGL中执行以下操作:有两个3D点p1和p2,比如在位置(-1,0,0)和(1,0,0)处。通过这两个点绘制一条三维线。假设两条直线的方向向量都是(0,0,1)。我想跟踪两条线之间最小距离的点,并在这些线围绕点p1和p2围绕随机轴旋转小角度时显示它们 我是OpenGL新手,对线之间最近点的计算应该在哪里进行感到非常困惑。如果通过提供端点绘制两条线,则无法在几何体着色器中进行计算,因为它只能访问一个基本体,而我需要两条线来计算最近的点 我应该如何进行此操作?这不是OpenGL或着色器
我应该如何进行此操作?这不是OpenGL或着色器的真正工作。在CPU端(你知道一切)进行计算,然后画出结果。OpenGL是一个图形API,而不是一个数学框架!谢谢你的回复。据我所知,线的旋转应用于顶点着色器内部,因此在此之前我不知道两条线端点的位置。您是否建议在发送到着色器之前执行所有操作,包括旋转和最近点计算?与大多数情况一样,有多种可能的解决方案。是的,您可以在GPU上的着色器中执行所有操作。这需要对OpenGL进行一些欺骗,但这是可能的(例如,将GL_线_邻接度输入到几何体着色器中,这将为您提供4个顶点)。但它也要求您重新计算每一帧中的点。或者,您在CPU端执行此操作(即,包括转换),并上传点供GPU绘制。仍然可以使用顶点着色器变换顶点。但是,您可以在两个位置(CPU和GPU)执行此操作。不过,这并不太糟糕。