问题描述
看交互式图形学基于opengl着色器的自顶向下方法第六版运行后面的代码平行投影和透视投影投不出来完全复制附录代码也投不出来平行投影的顶点着色器代码为invec4vPosition;uniformmat4model_view;uniformmat4projection;voidmain(){gl_Position=projection*model_view*vPosition;}
去掉*model_view就可以投出平行投影加上去就什么都没有了是不是model_view矩阵出问题了完全用的作者的代码GLfloatradius=1.0;GLfloattheta=0.0;GLfloatphi=0.0;Angel::vec4eye(radius*cos(theta),radius*sin(theta)*cos(phi),radius*sin(theta)*sin(phi),1.0);Angel::vec4at(0.0,0.0,0.5,1.0);Angel::vec4up(0.0,1.0,0.0,0.0);Angel::mat4mv=LookAtX(eye,at,up);glUniformMatrix4fv(model_view,1,GL_TRUE,mv);
作者的LookAt代码为GLfloatdot(constvec4&u,constvec4&v){returnu.x*v.x+u.y*v.y+u.z*v.z+u.w+v.w;}GLfloatlength(constvec4&v){returnstd::sqrt(dot(v,v));}vec4normalize(constvec4&v){returnv/length(v);}Angel::mat4LookAt(constAngel::vec4&eye,constAngel::vec4&at,constAngel::vec4&up){Angel::vec4n=normalize(eye-at);Angel::vec4u=Angel::vec4(normalize(cross(up,n)),0.0);Angel::vec4v=Angel::vec4(normalize(cross(n,u)),0.0);Angel::vec4t=Angel::vec4(0.0,0.0,0.0,1.0);Angel::mat4c=Angel::mat4(u,v,n,t);returnc*Translate(-eye);}
求救了