1

簡単に説明すると、クラス Cube を呼び出してプレイヤーを描画するクラスがあり、コンストラクターでそれぞれ異なる変数が定義された頭、体、2 本の腕、2 本の脚を作成します。しかし、head.r = 1.0f を呼び出しても色はまったく変わりません。これは、キューブ メソッドがマトリックスをプッシュおよびポップするためでしょうか?

Player クラスの先頭部分

    head = new Cube(0.0f, 1.0f, 1.0f, h_x, h_y, h_z, 0.0f, 0.0f, 0.0f, 0.0f, h_length, h_height, h_width);
    head.cube(drawable);


    head.r = 1.0f;

キューブ法

public void cube(GLAutoDrawable drawable) {
    GL2 gl = drawable.getGL().getGL2();

    gl.glPushMatrix();

    gl.glColor3f(r, g, b);
    gl.glTranslatef(x, y, z);
    gl.glRotatef(angle, pitch, yaw, roll);
    gl.glScalef(length, height, width);
    gl.glBegin(GL_QUADS);

    //front
    gl.glVertex3f(c, c, c);
    gl.glVertex3f(c, -c, c);
    gl.glVertex3f(-c, -c, c);
    gl.glVertex3f(-c, c, c);
    //back
    gl.glVertex3f(c, c, -c);
    gl.glVertex3f(c, -c, -c);
    gl.glVertex3f(-c, -c, -c);
    gl.glVertex3f(-c, c, -c);
    //top
    gl.glVertex3f(c, c, c);
    gl.glVertex3f(c, c, -c);
    gl.glVertex3f(-c, c, -c);
    gl.glVertex3f(-c, c, c);
    //bottom
    gl.glVertex3f(c, -c, c);
    gl.glVertex3f(c, -c, -c);
    gl.glVertex3f(-c, -c, -c);
    gl.glVertex3f(-c, -c, c);
    //left
    gl.glVertex3f(-c, c, c);
    gl.glVertex3f(-c, -c, c);
    gl.glVertex3f(-c, -c, -c);
    gl.glVertex3f(-c, c, -c);
    //right
    gl.glVertex3f(c, c, c);
    gl.glVertex3f(c, -c, c);
    gl.glVertex3f(c, -c, -c);
    gl.glVertex3f(c, c, -c);

    gl.glEnd();

    gl.glPopMatrix();

}

PS 混乱を避けるために、クラスは Cube、メソッドは Cube です。

編集:プッシュとポップをコメントアウトしてみましたが、すべてが台無しになりましたが、頭の色はまだ変わりません.

4

1 に答える 1

1

色を変更する前に描いていたJOGLのループが原因で、JOGLオブジェクトを誤って使用していたことがわかりましたが、プレーヤークラスのコンストラクターで頭を定義してからhead.rを変更すると、色が変更されました。残念ながら、全体的な問題は解決しませんでした。時間の無駄で申し訳ありませんが、この質問を閉じてください。これが他の人に役立つことを願っています。

于 2013-06-10T20:56:12.663 に答える