OpenGL的:两个元件之间拉线(OpenGL: draw line between two ele

2019-09-19 23:37发布

我要画,我创建了两个网之间的一条线。 每个网格都与不同的模型矩阵相关联。 我一直在思考如何做到这一点,我想这:

glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(first_object_model_matrix);
glBegin(GL_LINES);
glVertex3f(0, 0, 0); // object coord
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(first_object_model_matrix);
glVertex3f(0, 0, 0); // ending point of the line
glEnd( );

但问题是,我不能调用glMatrixModeglLoadMatrixf之间glBeginglEnd 。 我还使用着色器和可编程管线,所以义无反顾地与渲染我的场景固定管道的想法并不令人兴奋。

你是否可以:

  • 建议我正是如何绘制两个筛网(我有自己的模型矩阵)着色器之间的线路。

要么

  • 我建议如何写一个类似于上面的代码来绘制具有两个网格模型矩阵的线。

Answer 1:

通过每一个与你的模型矩阵的一个相乘计算线的两分。 以下是伪代码。 由于您使用Qt的,你可以使用其内置的数学库来实现这种效果。

vec3 line_point_1 = model_matrix_object1 * vec4(0, 0, 0, 1);
vec3 line_point_2 = model_matrix_object2 * vec4(0, 0, 0, 1);
// Draw Lines


Answer 2:

第二点的位置可以简单地从model_matrix_object2的瓦特矢量取出。 无需用(0,0,0,1)繁殖。

这是因为,在OpenGL 4x4矩阵通常是由3×3的旋转部分和平移矢量的邻矩阵。 最后一行,然后用0,0,0,1填充。 如果你想知道一个4x4矩阵将转换简单地得到在最右边的列向量。

请参阅给定一个4×4矩阵齐,我怎样才能获得3D世界COORDS? 获取更多信息。



文章来源: OpenGL: draw line between two elements