3

私はこれを機能させるために数え切れないほど試しました。たくさん移動しましたが、それでも何も機能しません。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();
    }

}
4

1 に答える 1

3

にある出力を生成しながら、各色の強度に対してglColor3fに 3 つの float パラメータを受け入れるものを使用しています。[0.0,1.0]rand()%255[0,254]

glColor3ub( GLubyte red, GLubyte green, GLubyte blue)符号なしバイトを受け入れる に切り替える(および%256で値をスキップしているため、モジュロを に変更する255) か[0.0,1.0]、ランダム生成を に変更して で値を生成rand()/((float)RAND_MAX+1) できますが、これは のタイプを に変更する必要があることを意味しcolorArrayますGLFloat

于 2012-11-29T22:37:18.213 に答える