发布网友
共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的高级内容。这些东西会帮助你更简单的实现更漂亮的效果