【发布时间】:2011-12-14 16:38:41
【问题描述】:
我正在使用 GLUT 在 openGL 中制作一个基本游戏,但遇到了一个小问题。
当我尝试从一个类中将一个对象绘制到我的世界中时,它会为所有东西赋予一种颜色,该颜色是上次使用函数 makeMaterial 创建的(见下文)。
有谁知道我如何将这些更改限制为仅应用于对象? 我试过推送/弹出,但它似乎没有任何限制。 此外,如果最后绘制的颜色是黑色,我什么都看不到,除了我的雪人。
以下是相关代码:
制作材料:-
makeMaterial( float r,float g,float b,float a,float s )
{
float color[4];
float white[4];
GLfloat surfshine[1] ;
surfshine[0]=s*128.0 ;
color[0]=r;color[1]=g;color[2]=b;color[3]=a;
white[0]=0.5;white[1]=0.5;white[2]=0.5;white[3]=1.0;
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT,color);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE,color);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,white);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS,surfshine);
}
makeMaterial 使用中:-
makeMaterial(0.05f,0.05f,0.05f,1.00f, 0.4f);
glPushMatrix();
glutSolidCube(10.0);
glPopMatrix();
我的绘图功能:-
void drawToScene(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
uniformFPS.setStartTime(glutGet(GLUT_ELAPSED_TIME));
camera.updateCamera();
lvl1.drawLevel();
enemy.drawSnowman(350.0f,6.0f, 200.0f);
crosshair.show();
glutSwapBuffers();
uniformFPS.enforceChecks();
}
【问题讨论】:
标签: opengl colors rendering state glut