0

私のコードでは、オブジェクトに応じて照明を調整できないため、移動するオブジェクトに照明を固定することはできません。オブジェクトと一緒にライトを動かすにはどうすればよいですか

私は0,0、-15の位置にあるオブジェクトを持っており、上下左右のボタンを押すと、このオブジェクトは子羊のオブジェクトであるライトと一緒に移動します。それでも、light(lamb object)を0,0、-15の位置に置き、move_xとmove_zの座標をライトの位置として指定しましたが、ライトは別の場所に表示され、オブジェクトとリンクせずに移動しています。これは私のコードです:

            glTranslatef(move_x,0,move_y);
            float l0_pos_temp[] = {move_x   ,-3, move_y  ,1} ;
            glLightfv( GL_LIGHT0, GL_POSITION, l0_pos_temp ) ;
            glTranslatef(0,-3,0);
            Light();
        glPopMatrix();
4

1 に答える 1

0

注意すべき重要な点は、glLightfv()がモデルビューマトリックスの現在の状態の影響を受けることです。つまり、glTranslatef(move_x、0、move_y)を呼び出してから、ライトの位置を設定する前に、ライトを(move_x、0、move_y)だけ変換します。

おそらくあなたが望む:

        glTranslatef(move_x,0,move_y);
        float l0_pos_temp[] = {0.0f, -3.0f, -15.0f, 1.0f};
        glLightfv( GL_LIGHT0, GL_POSITION, l0_pos_temp );
        glPopMatrix();
于 2011-12-25T18:09:17.273 に答える