📄 objloderview.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 + -