Opengl 将两个不同的模型矩阵应用于两个顶点以绘制直线
我想在两个顶点之间画一条线。但是,我事先不知道这两点 我试图实现的是上传一个顶点缓冲区,其中两个顶点位于0,0,0。然后,在draw调用之前,即glDrawArraysGL_线之前,0,1,尝试使用单独的模型矩阵平移两个顶点。我正在使用一个着色器程序。更详细地解释一下,这有点像我知道fromVertex和toVertex,我想在它们之间画一条线。我想应用模型矩阵1,将vertice 1从0,0,0转换为fromVertex,并应用模型矩阵2,将vertice 2从0,0,0转换为fromVertexOpengl 将两个不同的模型矩阵应用于两个顶点以绘制直线,opengl,Opengl,我想在两个顶点之间画一条线。但是,我事先不知道这两点 我试图实现的是上传一个顶点缓冲区,其中两个顶点位于0,0,0。然后,在draw调用之前,即glDrawArraysGL_线之前,0,1,尝试使用单独的模型矩阵平移两个顶点。我正在使用一个着色器程序。更详细地解释一下,这有点像我知道fromVertex和toVertex,我想在它们之间画一条线。我想应用模型矩阵1,将vertice 1从0,0,0转换为fromVertex,并应用模型矩阵2,将vertice 2从0,0,0转换为fromVert
uniform mat4 projection;
uniform mat4 camera;
uniform mat4 model;
in vec3 vert;
in vec2 vertTexCoord;
in vec3 vertColor;
out vec2 fragTexCoord;
out vec3 fragColor;
void main() {
// Pass the tex coord straight through to the fragment shader
fragTexCoord = vertTexCoord;
fragColor = vertColor;
// Apply all matrix transformations to vert
gl_Position = projection * camera * model * vec4(vert, 1);
}
我无法将其转换为代码,因为我想不出在绘制直线时如何将顶点着色器中的模型矩阵统一变量设置为两个不同的值。我正在尝试使用缩放和/或旋转操作来实现这一点。但是,我猜一定有一种更简单的方法可以做到这一点。我试图在渲染循环中不使用glBufferData来解决这个问题。只需使用它并上传顶点就可以轻松解决问题。你为什么要这么做?并不是说这是不可能的。但是:当你将一些矩阵M应用于点0,0,0,1时,你只需选择矩阵的最后一列-因此,不用使用0,0,0,1顶点并上传两个矩阵,你可以直接上传结果的顶点。顺便说一下,glDrawArrays GL_LINES,0,1不会做任何事情。要创建线,线列表中至少需要两个点。