gpt4 book ai didi

opengl - 如何在 OpenGL 中将颜色更改为随机颜色?

转载 作者:行者123 更新时间:2023-12-02 00:15:01 33 4
gpt4 key购买 nike

我已经尝试了无数次来尝试让它发挥作用。我已经移动了很多,但仍然没有任何效果。当我按下 M 键时,我的灯光会变成随机颜色。但是,它们只变为白色。

这就是我所拥有的...

float 颜色数组[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();
}

}

最佳答案

您正在使用 glColor3f,它在 [0.0,1.0] 中为每个颜色强度接受 3 个浮点参数,而 rand()%255 产生[0,254] 中的输出。

您可以切换到接受无符号字节的glColor3ub(GLubyte red, GLubyte green, GLubyte blue)(并将模数更改为%256,因为您正在跳过值 255) 或通过将随机生成更改为 [0.0,1.0] 生成一个值rand()/((float)RAND_MAX+1)但这意味着您必须将 colorArray 的类型更改为 GLFloat

关于opengl - 如何在 OpenGL 中将颜色更改为随机颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635980/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com