在Java OpenGL中更改对象变量
我会尽量简短地说,我有一个类,它通过调用类立方体来绘制一个玩家,生成一个头部、一个身体、两个手臂和两条腿,每个都在我的构造函数中定义了不同的变量。但是调用head.r=1.0f根本不会改变颜色,是不是因为我的立方体方法推动并弹出矩阵 球员职业的头部在Java OpenGL中更改对象变量,java,opengl,jogl,Java,Opengl,Jogl,我会尽量简短地说,我有一个类,它通过调用类立方体来绘制一个玩家,生成一个头部、一个身体、两个手臂和两条腿,每个都在我的构造函数中定义了不同的变量。但是调用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(draw
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();
}
另外,为了避免混淆,类是Cube,方法是Cube
编辑:我试着对推和弹出进行注释,结果弄得一团糟,但头部的颜色仍然没有改变。我发现,我使用的JOGL对象不正确,因为我在改变颜色之前绘制的JOGL循环,但是在我的player类的构造函数中定义head,然后更改head.r会产生颜色变化。不幸的是,它并没有解决我的整个问题。请继续并结束此问题,抱歉浪费时间。我希望这对其他人有所帮助。我发现,我使用JOGL对象的方式不正确,因为在更改颜色之前我绘制了JOGL循环,但在我的玩家类的构造函数中定义了头部,然后更改了head。r产生了颜色更改。不幸的是,它并没有解决我的整个问题。请继续并结束此问题,抱歉浪费时间。我希望这能帮助其他人