本文整理汇总了C++中Part::getMesh方法的典型用法代码示例。如果您正苦于以下问题:C++ Part::getMesh方法的具体用法?C++ Part::getMesh怎么用?C++ Part::getMesh使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Part
的用法示例。
在下文中一共展示了Part::getMesh方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: drawParts
void drawParts(vector<Part*> Parts) {
for(int i = 0; i < Parts.size(); i++) {
Part *p = Parts[i];
if (p->isVisible) {
glMaterialfv(GL_FRONT, GL_AMBIENT, p->getMaterialAmbient());
glMaterialfv(GL_FRONT, GL_SPECULAR, p->getMaterialSpecular());
glMaterialfv(GL_FRONT, GL_DIFFUSE, p->getMaterialDiffuse());
glMaterialfv(GL_FRONT, GL_SHININESS, p->getMaterialShininess());
glPushMatrix();
for (std::vector<PartTransformation>::reverse_iterator rit = p->Transformations.rbegin(); rit != p->Transformations.rend(); ++rit)
{
PartTransformation op = *rit;
switch(op.getOpType()) {
case OP_ROTATE:
glRotatef(op.getValues()[0], op.getValues()[1], op.getValues()[2], op.getValues()[3]);
break;
case OP_SCALE:
glScalef(op.getValues()[0], op.getValues()[1], op.getValues()[2]);
break;
case OP_TRANSLATE:
glTranslatef(op.getValues()[0], op.getValues()[1], op.getValues()[2]);
break;
}
}
// start texturing if necessary
if (p->isTextured()) {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, p->getTextureId());
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, p->getTextureMap());
}
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glNormalPointer(GL_FLOAT, 0, p->getMesh()->getNormals());
glVertexPointer(NUM_POINTS_PER_VERTEX, GL_FLOAT, 0, p->getMesh()->getVerticies());
glDrawArrays(GL_QUADS, 0, p->getMesh()->getNumVerticiesTotal());
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
// clean up texturing if we started it
if (p->isTextured()) {
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
}
if (p->getChildCount() > 0) {
drawParts(p->getChildren());
}
glPopMatrix();
}
}
}