我的opengl光照模型为什么这么难看,光照十分强烈,请高手指点,谢谢

[复制链接]
查看11 | 回复2 | 2011-5-30 09:39:27 | 显示全部楼层 |阅读模式
//光照设置
        GLfloat model_ambient[] = { 1.0f, 1.0f, 1.0f, 1.0f };
        GLfloat light_position0[]= { 0, 0, -3.0f, 0.0f };
        GLfloat light_color0[] = { 1.0f, 1.0f, 1.0f, 1.0f };
       
        //环境光
        glLightModelfv( GL_LIGHT_MODEL_AMBIENT, model_ambient );       
        //光源位置
        glLightfv( GL_LIGHT0, GL_POSITION, light_position0 );       
        //光源颜色
        glLightfv( GL_LIGHT0, GL_DIFFUSE, light_color0 );       
        //打开光源
        glEnable( GL_LIGHTING );
        glEnable( GL_LIGHT0 );
//材料设置
        GLfloat gray_ambient[]= { 0.5f, 0.5f, 0.5f };
        GLfloat gray_diffuse[]= { 0.3f, 0.3f, 0.3f };
        GLfloat gray_specular[] = { 0.1f, 0.1f, 0.1f };
        GLfloat gray_shininess[]= { 1.0f };
        glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, gray_ambient);
        glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, gray_diffuse );
        glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR,gray_specular);
        glMaterialfv( GL_FRONT_AND_BACK, GL_SHININESS, gray_shininess );
//模型
        GLUquadric* gluPipeinWall;
        gluPipeinWall = gluNewQuadric();
        gluQuadricDrawStyle(gluPipeinWall, GLU_FILL);
        gluQuadricNormals(gluPipeinWall, GLU_FLAT);                       
        glRotatef(-90,0,1,0);
        gluCylinder(gluPipeinWall, 21, 21, 90, 15, 30);
我是要绘制一个圆柱,实际应用时候由于端头是一个切口,圆柱必须按照旋转角增量值,一点一点的绘制,不能用其他工具导入。
提问:感觉在dialog里面的DC使用opengl与在 CView 的Dc绘图,比如光照,投影变换都不一样了,求高手指点

回复

使用道具 举报

千问 | 2011-5-30 09:39:27 | 显示全部楼层
光照不理想和法线也是有关系的 你可以修改你模型顶点的法线试试...
回复

使用道具 举报

千问 | 2011-5-30 09:39:27 | 显示全部楼层
模型(譬如3ds max的模型),导为OpenGL Cpp文件,为什么不包含光照信息呢? 这种问题,有点难度!我的没明白你的意思!也许要加分找高手回答...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行