当前位置:编程学习 > 网站相关 >>

求救 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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,