我已经尝试了无数次试图让它发挥作用。我已经移动它的负载,但仍然没有任何作用。当我按下M键时,我的灯光会变成随机颜色。但是,它们只是改变为白色。
这就是我的......
float colorArray [100] [3]; //为随机颜色创建一个数组
keyPressed功能:
case 'm' | 'M':
updateLights(2);
break;
defined_to_openGL函数:
for (int i = 0; i < 3; i++)
{
glPushMatrix();
glColor3f(colorArray[i][0],colorArray[i][1],colorArray[i][2]);
glTranslatef(-50*i/2,-20,0.5); // Begin the first circle at -50, -20. Then multiply by i to create a space between them.
drawLights(2.0f);
glPopMatrix();
if(i <= 3)
{
glPushMatrix();
glColor3f(colorArray[i][0],colorArray[i][1],colorArray[i][2]);
glTranslatef(-38,-20,0.5);
drawLights(2.0f);
glPopMatrix();
glPushMatrix();
glColor3f(colorArray[i][0],colorArray[i][1],colorArray[i][2]);
glTranslatef(-12,-20,0.5);
drawLights(2.0f);
glPopMatrix();
}
}
更新灯光功能:
{
cout << "update lights" << endl;
for(int i = 0; i < 3; i++)
{
colorArray[i][0] = rand() % 255;
colorArray[i][1] = rand() % 255;
colorArray[i][2] = rand() % 255;
glutPostRedisplay();
}
}
答案 0 :(得分:3)
您正在使用glColor3f
,在[0.0,1.0]
中为每种颜色强度接受3个浮点参数,而rand()%255
生成的输出位于[0,254]
。
您可以切换到接受无符号字节的glColor3ub( GLubyte red, GLubyte green, GLubyte blue)
(并将模数更改为%256
,因为您要使用255
跳过值)或在{{1}中生成值通过将随机生成更改为
[0.0,1.0]
但这意味着您必须将rand()/((float)RAND_MAX+1)
的类型更改为colorArray
。