openGL如何将一个球体设置成一个光源?
做的一个太阳系模拟图,现在想让中间的球体,也就是太阳作为一个光源,这个球体是用gluSphere画出来的,原来是在原点位置,可以让lightingPos[]={0.0,0...
做的一个太阳系模拟图,现在想让中间的球体,也就是太阳作为一个光源,这个球体是用gluSphere画出来的,原来是在原点位置,可以让lightingPos[]={0.0,0.0,0.0,1.0}
可是这个程序有一个鼠标拖动放大功能,往前拉就放大,放大之后发现光源位置就不对了,并且在放置光源之后太阳颜色就不是白色的了,求高手教育! 以下是光照部分代码 展开
可是这个程序有一个鼠标拖动放大功能,往前拉就放大,放大之后发现光源位置就不对了,并且在放置光源之后太阳颜色就不是白色的了,求高手教育! 以下是光照部分代码 展开
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的高级内容。这些东西会帮助你更简单的实现更漂亮的效果
关于你程序中旋转的问题你试试将 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); 这行放到glScalef()后面,因为OPENGL矩阵旋转位移只对它后面的绘制作出影响。
至于太阳颜色方面你可以绘制一个白色的球体作为太阳,并且在绘制太阳时关闭光照,这样它永远都是你指定的颜色 CODE:
glDisable(GL_LIGHTING);
RenderSun();
glEnable(GL_LIGHTING);
最后,如果你觉得你对OGL固定管线比较了解后( glBegin()...glLight,.,这些东西现在已经抛弃了 ),可以学习FBO,VBOP,GLSL等openGL的高级内容。这些东西会帮助你更简单的实现更漂亮的效果
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询