openGL如何将一个球体设置成一个光源?

发布网友

我来回答

1个回答

热心网友

所谓让球体作为光源其实都是在光源位置绘制一个球体而已;如果你要实现物体自发光的话那是一个高级课题,要借助Shader才能实现。

关于你程序中旋转的问题你试试将 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); 这行放到glScalef()后面,因为OPENGL矩阵旋转位移只对它后面的绘制作出影响。

至于太阳颜色方面你可以绘制一个白色的球体作为太阳,并且在绘制太阳时关闭光照,这样它永远都是你指定的颜色 CODE:
glDisable(GL_LIGHTING);
RenderSun();
glEnable(GL_LIGHTING);

最后,如果你觉得你对OGL固定管线比较了解后( glBegin()...glLight,.,这些东西现在已经抛弃了 ),可以学习FBO,VBOP,GLSL等openGL的高级内容。这些东西会帮助你更简单的实现更漂亮的效果

热心网友

所谓让球体作为光源其实都是在光源位置绘制一个球体而已;如果你要实现物体自发光的话那是一个高级课题,要借助Shader才能实现。

关于你程序中旋转的问题你试试将 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); 这行放到glScalef()后面,因为OPENGL矩阵旋转位移只对它后面的绘制作出影响。

至于太阳颜色方面你可以绘制一个白色的球体作为太阳,并且在绘制太阳时关闭光照,这样它永远都是你指定的颜色 CODE:
glDisable(GL_LIGHTING);
RenderSun();
glEnable(GL_LIGHTING);

最后,如果你觉得你对OGL固定管线比较了解后( glBegin()...glLight,.,这些东西现在已经抛弃了 ),可以学习FBO,VBOP,GLSL等openGL的高级内容。这些东西会帮助你更简单的实现更漂亮的效果

热心网友

所谓让球体作为光源其实都是在光源位置绘制一个球体而已;如果你要实现物体自发光的话那是一个高级课题,要借助Shader才能实现。

关于你程序中旋转的问题你试试将 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); 这行放到glScalef()后面,因为OPENGL矩阵旋转位移只对它后面的绘制作出影响。

至于太阳颜色方面你可以绘制一个白色的球体作为太阳,并且在绘制太阳时关闭光照,这样它永远都是你指定的颜色 CODE:
glDisable(GL_LIGHTING);
RenderSun();
glEnable(GL_LIGHTING);

最后,如果你觉得你对OGL固定管线比较了解后( glBegin()...glLight,.,这些东西现在已经抛弃了 ),可以学习FBO,VBOP,GLSL等openGL的高级内容。这些东西会帮助你更简单的实现更漂亮的效果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com