zoukankan      html  css  js  c++  java
  • 【转】 《基于MFC的OpenGL编程》Part 8 Colors

    OpenGL支持两种颜色模式:RGBA和颜色索引模式,本文关注于前者。

    Smooth Shading and Flat Shading  

    When Smooth Shading is specified, the color values are interpolated between vertices. If Flat Shading is specified, one vertex is selected as being representative of all the vertices, thus the entire primitive is displayed using one single color.

    一个简单Demo

    1,CCY457OpenGLView.h中加入如下旋转控制变量:

          GLfloat m_xRot, m_yRot;//绕x,y轴旋转的角度,随时间不断变化

    并在构造函数中初始化:

    CCY457OpenGLView::CCY457OpenGLView()
    {
         m_xRot
    = 0.0f
    ;
         m_yRot
    = 0.0f
    ;
    }

    2,在OnTimer函数中,修改绕x,y轴旋转的角度值

    void CCY457OpenGLView::OnTimer(UINT nIDEvent)
    {
         m_xRot
    = m_xRot + 0.5f
    ;
         m_yRot
    = m_yRot + 0.5f
    ;
         InvalidateRect(NULL, FALSE);    
         CView::OnTimer(nIDEvent);
    }

    3,加入两个菜单项,控制OpenGL的渲染模式

    void CCY457OpenGLView::OnShadingmodelSmooth()
    {
         glShadeModel(GL_SMOOTH);
         InvalidateRect(NULL,FALSE);
    }

    void
    CCY457OpenGLView::OnShadingmodelFlat()
    {
         glShadeModel(GL_FLAT);
         InvalidateRect(NULL,FALSE);
    }

    4,在RenderScene中加入绘制代码:

    void CCY457OpenGLView::RenderScene ()
    {
    //绘制函数

             glTranslatef(0.0f,0.0f,-5.0f);
             glRotatef(m_xRot,
    1.0f,0.0f,0.0f
    );
             glRotatef(m_yRot,
    0.0f,1.0f,0.0f
    );
            
    //Front Face

             glBegin(GL_POLYGON);
                 glColor3f(
    1.0f,0.0f,0.0f
    );
                 glVertex3f(
    -1.0f,-1.0f,0.0f
    );
                 glColor3f(
    1.0f,1.0f,0.0f
    );
                 glVertex3f(
    1.0f,-1.0f,0.0f
    );
                 glColor3f(
    1.0f,0.0f,1.0f
    );
                 glVertex3f(
    1.0f, 1.0f,0.0f
    );
                 glColor3f(
    1.0f,1.0f,1.0f
    );
                 glVertex3f(
    -1.0f, 1.0f,0.0f
    );
             glEnd();
             glColor3f(
    1.0f,1.0f,0.0f
    );
            
    //Back Face

             glBegin(GL_POLYGON);
                 glVertex3f(
    -1.0f,-1.0f,-1.0f
    );
                 glVertex3f(
    -1.0f, 1.0f,-1.0f
    );
                 glVertex3f(
    1.0f, 1.0f,-1.0f
    );
                 glVertex3f(
    1.0f,-1.0f,-1.0f
    );
             glEnd();
             glColor3f(
    1.0f,0.0f,1.0f
    );
            
    //Left Face

             glBegin(GL_POLYGON);
                 glVertex3f(
    -1.0f,-1.0f, 0.0f
    );
                 glVertex3f(
    -1.0f, 1.0f, 0.0f
    );
                 glVertex3f(
    -1.0f, 1.0f,-1.0f
    );
                 glVertex3f(
    -1.0f,-1.0f,-1.0f
    );
             glEnd();
             glColor3f(
    0.0f,1.0f,0.0f
    );
            
    //Right Face

             glBegin(GL_POLYGON);
                 glVertex3f(
    1.0f,-1.0f, 0.0f
    );
                 glVertex3f(
    1.0f,-1.0f,-1.0f
    );
                 glVertex3f(
    1.0f, 1.0f,-1.0f
    );
                 glVertex3f(
    1.0f, 1.0f, 0.0f
    );
             glEnd();
             glColor3f(
    0.0f,1.0f,1.0f
    );
            
    //Top Face

             glBegin(GL_POLYGON);
                 glVertex3f(
    -1.0f, 1.0f,  0.0f
    );
                 glVertex3f(
    1.0f, 1.0f,  0.0f
    );
                 glVertex3f(
    1.0f, 1.0f, -1.0f
    );
                 glVertex3f(
    -1.0f, 1.0f, -1.0f
    );
             glEnd();
             glColor3f(
    0.0f,0.0f,1.0f
    );
            
    //Botton Face

             glBegin(GL_POLYGON);
                 glVertex3f(
    -1.0f, -1.0f,  0.0f
    );
                 glVertex3f(
    -1.0f, -1.0f, -1.0f
    );
                 glVertex3f(
    1.0f, -1.0f, -1.0f
    );
                 glVertex3f(
    1.0f, -1.0f,  0.0f
    );
             glEnd();
    }

  • 相关阅读:
    用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!
    初级练手项目——用Python一步一步实现“智能”贪吃蛇!
    这五本Python急速入门必读的书,送给正在学习Python的你!
    探讨2018年最受欢迎的15顶级Python库!
    运用Python制作你心目中的完美女神脸!
    掌握这些Python代码技巧,编程至少快一半!
    解决Protege使用中的一个问题:从已有owl文件建立项目失败(w3china)
    http响应状态码
    云计算二 转帖
    protege中Property Domains and Ranges理解
  • 原文地址:https://www.cnblogs.com/lcxu2/p/2004052.html
Copyright © 2011-2022 走看看