在Java OpenGL中更改对象变量

时间:2013-06-10 20:10:29

标签: java opengl jogl

我会尽量保持简短,我有一个类通过调用Cube类来绘制一个玩家来制作一个Head,一个Body,两个arm和两条腿,每个都在我的构造函数中定义了不同的变量。但是调用head.r = 1.0f根本不会改变颜色,是因为我的立方体方法会推动并弹出矩阵吗?

玩家类的头部

    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();

}

P.S。为避免混淆,该类为Cube,方法为cube。

编辑:我试着评论推和弹出,并且它混乱了一切,但头的颜色仍然没有改变。

1 个答案:

答案 0 :(得分:1)

我想通了,我正在错误地使用JOGL对象,由于JOGL的循环我在更改颜色之前绘制,但是在我的播放器类的构造函数中定义头部然后更改head.r产生了颜色变化。不幸的是,它没有解决我的整体问题。继续关闭这个问题,抱歉浪费时间。我希望这有助于其他人。