{
glPushMatrix();
glTranslatef(0.0f,0.0f,-10.0f);
//初始化名称栈
glInitNames();
//往栈顶压栈,压如一个名称
glPushName(0);
glColor3f(1.0f,0.0f,0.0f);
//用当前名称SUN替换掉栈顶名称
glLoadName(SUN);
glutSolidSphere(1.0,26,26);
glRotatef(yRot,0.0f,1.0f,0.0f);
glTranslatef(2.0f,0.0f,0.0f);
glColor3f(0.0f,0.0f,1.0f);
//用EARTH替换掉栈顶名称
glLoadName(EARTH);
//glPushName(EARTH);
glutSolidSphere(0.3,26,26);
glTranslatef(1.0f,0.0f,0.0f);
glColor3f(0.25f,0.25f,0.75f);
//用当前名称MOON替换掉栈顶名称
glLoadName(MOON);
//glPushName(MOON);
glutSolidSphere(0.1,26,26);
glPopMatrix();
}
voidRenderScene()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
RenderSphere();
glutSwapBuffers();
}
voidChangeSize(GLsizeiw,GLsizeih)
{
if(h==0)
h=1;
glViewport(0,0,w,h);
GLfloatfAspect=(GLfloat)w/(GLfloat)h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(35.0f,fAspect,1.0f,50.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
voidTimerFunc(intvalue)
{
yRot+=0.5;
if(yRot>360.0f)
{
yRot=0.0f;
}
glutPostRedisplay();
glutTimerFunc(50,TimerFunc,1);
}
//处理点击记录
voidProcessHit(inthits,GLuint*buf)
{
for(inti=1;i<=hits;++i)
{
GLuintnameNum=*buf;
printf("hitnumber%d\n",i);

printf("namestackcountis%d\n",*buf);buf++;
printf("minzvalueis%g\n",(float)*buf/0x7FFFFFFF);buf++;
printf("maxzvalueis%g\n",(float)*buf/0x7FFFFFFF);buf++;
printf("namevalueis:");
for(intj=0;j<nameNum;++j)
{
switch(*buf)
{
caseSUN:
printf("SUN\t");
break;
caseEARTH:
printf("EARTH\t");
break;
caseMOON:
printf("MOON\t");
break;
default:
break;
}
buf++;
}
printf("\n");
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30673-3.html
我就笑笑啦明显是针对新出的6s6sp来更新的那些以前的更新难免会出一些毛病喽