我在视类中用opengl画了一个图,本来我将投影变换设置成正交投影,
glOrtho(l,r,b,t,-500,500);
画出的图象有颜色,
现在我将投影变换设置成透视变换
glFrustum(l,r,b,t,10,500);
其他什么都没改;
有图像,但光线和颜色都没了,图像显示黑色!
本来我定义了GLfloat h_ambientProperties[]  = {0.8f, 0.2f, 0.1f, 1.0f};
   GLfloat h_diffuseProperties[]  = {0.7f, 0.3f, 0.05f, 1.0f};
   GLfloat h_specularProperties[] = {1.0f, 0.3f, 0.2f, 1.0f};
光线和图像的材质,都是好的!
有改了一条语句怎么就这样了啊?但我发现光线好像从z负轴的无穷远处发过来,被我的图像挡住了!
这是什么原因!
如何解决?

解决方案 »

  1.   

    glFrustum(l,r,b,t,0.1,50000);试试。
      

  2.   

    没有用!好像屏幕的正面都没有光照了!
    我再屏幕上画了两个球,第一个再z负轴上,另一个在第一个球的基础上向x轴平移,结果,在z负轴无穷远处到第二个球的背面有一束呈锥形的本来该球有的颜色!锥顶在无穷远(不可见,被第一个球挡主了,但是趋势),锥底照在球上(不可见,被球正面挡)!
    这是怎么回事啊!
      

  3.   

    平行投影也好,透视投影也好,他们本身对于材质和光照都是没有影响的他们差异只是在物体的可见性上怀疑你的相机的位置有问题,在你的设置下,改变成透视投影模式的时候,相机的位置上看不到的物体,所以给你都是黑色的错觉根据你的物体的位置,调整你的gluLookAt函数从参数,以及如太平洋所说的glFrustum(l,r,b,t,0.1,50000);试试。
      

  4.   

    相机的位置我没有设置!应该是默认设置吧!而且主要问题是我能看到物体啊,就是没颜色,因为我让物体转动的,所以物体是黑色的也能隐约看到!
    是不是光源位置问题!光源位置不在投影区内会不会就没有光源了啊!
    可我原来也没有设置光源位置啊!
    问题好奇怪啊!
    我再屏幕上画了两个球,第一个再z负轴上,另一个在第一个球的基础上向x轴平移,结果,在z负轴无穷远处到第二个球的背面有一束呈锥形的本来该球有的颜色!锥顶在无穷远(不可见,被第一个球挡主了,但是趋势),锥底照在球上(不可见,被球正面挡)!