⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objloderview.cpp

📁 机器人运动学动力学及控制的一个小程序,供有兴趣的人参考
💻 CPP
字号:

DawObj()
{
    i=0;
    j=0;
    nextIndex=model->colorList[j].index;
    if(m_objloded)
    {
        if(drawSetting<LINE_INDEPENDENT)
        {
         if(model->haveNormals)
          {
            do
              {
                if(i==nextIndex)
                 {
                   setColor(&model->colorList[j].ra,&model->colorList[j].rd,
                            &model->colorList[j].rs,&model->colorList[j].spec,0);
                   j++;
                   nextIndex=model->colorList[j].index;
                  }
                if(drawSetting<=LINE_POLYGON)
                      glBengin(LINE_POLYGON);
                else
                    glBengin(LINE_LINE_LOOP);
                glNormal3fv(&model->vertexList[i].nx);
                glVertex3fv(&model->vertexList[i++].x);
                while(model->vertexList[i].draw)
                {
                    glNormal3fv(&model->vertexList[i].nx);
                    glVertex3fv(&model->vertexList[i++].x);
                }
                glEnd();
               }while(i<model->vertexCount);
           }
           else do
           {
                if(i==nextIndex)
                {
                   setColor(&model->colorList[j].ra,&model->colorList[j].rd,
                            &model->colorList[j].rs,&model->colorList[j].spec,0);
                   j++;
                   nextIndex=model->colorList[j].index;
                  }
                if(drawSetting<=LINE_POLYGON)
                      glBengin(LINE_POLYGON);
                else
                    glBengin(LINE_LINE_LOOP);
                glVertex3fv(&model->vertexList[i++].x);
                while(model->vertexList[i].draw)
                {
                    glVertex3fv(&model->vertexList[i++].x);
                }
                glEnd();
               }while(i<model->vertexCount);
           }
           else
           {
               currColor=-1;
               if(drawSetting==LINE_INDEPENDENT)
               {  
                  glBengin(LINE_LINES); 
                  do
                  {    
                     if(model->lineList[i].colorIndex!= currColor)
                     {
                        currColor=model->lineList[i].colorIndex;
                        setColor(&model->colorList[currColor].ra,
                                 &model->colorList[currColor].rd,
                                 &model->colorList[currColor].rs,
                                 &model->colorList[currColor].spec,0);
                     }
                     glVertex3fv(&model->lineList[i++].x);
                     glVertex3fv(&model->lineList[i++].x);
                   }while(i<model->lineCount);
                   glEnd();
                  } 
               if(drawSetting==LINE_STRIP) 
                  do
                  {    
                     glBengin(LINE_LINE_STRIP);
                     if(model->lineStripList[i].colorIndex!= currColor)
                     {
                        currColor=model->lineStripList[i].colorIndex;
                        setColor(&model->colorList[currColor].ra,
                                 &model->colorList[currColor].rd,
                                 &model->colorList[currColor].rs,
                                 &model->colorList[currColor].spec,0);
                     }
                     glVertex3fv(&model->lineStripList[i++].x);
                     while(model->lineStripList[i].draw)
                     {
                        glVertex3fv(&model->lineStripList[i++].x); 
                     }
                     glEnd();
                   }while(i<model->lineStripListCount);
      }
                      
}

void setColor(const GLfloat *ambient,const GLfloat *diffuse,const GLfloat *specular,
              const GLfloat shininess,const GLboolean stereo)
{   
     
    GLfloat c;
    GLfloat ca[4];
    
    if(!stereo){
       glMaterialfv(GL_FRONT,GL_AMBIENT,ambient);
       glMaterialfv(GL_FRONT,GL_DIFFUSE,diffuse);
       glMaterialfv(GL_FRONT,GL_SPECULAR,specular);
       glMaterialfv(GL_FRONT,GL_SHININESS,shininess);

       glColor4fv(diffuse);
       }

    else{
       c=0.27*ambient[0]+0.59*ambient[1]+0.14*ambient[2];
       ca[0]=ca[1]=ca[2]=c;
       glMaterialfv(GL_FRONT,GL_AMBIENT,ca);

       ca[0]=ca[1]=ca[2]=c;
       ca[3]=diffuse[3];
       c=0.27*diffuse[0]+0.59*diffuse[1]+0.14*diffuse[2]; 
       glMaterialfv(GL_FRONT,GL_DIFFUSE,ca);

       glColor4fv(c,c,c,diffuse[3]);

       ca[0]=ca[1]=ca[2]=c;
       c=0.27*specular[0]+0.59*specular[1]+0.14*specular[2]; 
       glMaterialfv(GL_FRONT,GL_SPECULAR,ca);

       glMaterialf(GL_FRONT,GL_SHININESS,shininess);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -