求救 opengl 3.2 投影 投不出来 交互式图形学 基于opengl着色器的自顶向下方法 第六版
看 交互式图形学 基于opengl着色器的自顶向下方法 第六版 运行后面的代码 平行投影 和 透视投影 投不出来 完全复制 附录代码 也投不出来平行投影的 顶点着色器 代码为
in vec4 vPosition;
uniform mat4 model_view;
uniform mat4 projection;
void main()
{
gl_Position = projection * model_view * vPosition;
}
去掉 * model_view 就可以投出 平行投影 加上去就什么都没有了
是不是 model_view 矩阵出问题了 完全用的作者的代码
GLfloat radius = 1.0;
GLfloat theta = 0.0;
GLfloat phi = 0.0;
Angel::vec4 eye( radius*cos(theta),
radius*sin(theta)*cos(phi),
radius*sin(theta)*sin(phi),
1.0 );
Angel::vec4 at( 0.0, 0.0, 0.5, 1.0 );
Angel::vec4 up( 0.0, 1.0, 0.0, 0.0 );
Angel ::mat4 mv = LookAtX( eye, at, up );
glUniformMatrix4fv( model_view, 1, GL_TRUE, mv );
作者的 LookAt 代码为
GLfloat dot( const vec4& u, const vec4& v )
{
return u.x*v.x + u.y*v.y + u.z*v.z + u.w+v.w;
}
GLfloat length( const vec4& v )
{
return std::sqrt( dot(v,v) );
}
vec4 normalize( const vec4& v )
{
return v / length(v);
}
Angel:: mat4 LookAt( const Angel::vec4& eye, const Angel::vec4& at, const Angel::vec4& up )
{
Angel:: vec4 n = normalize(eye - at);
Angel:: vec4 u = Angel::vec4(normalize(cross(up,n)),0.0);
Angel:: vec4 v = Angel::vec4(normalize(cross(n,u)),0.0);
Angel:: vec4 t = Angel::vec4(0.0, 0.0, 0.0, 1.0);
Angel:: mat4 c =Angel:: mat4(u, v, n, t);
return c * Translate( -eye ) ;
}
求救了 投影 OpenGL 图形 交互式图形学 基于opengl着色器
补充:云计算 , OpenAPI