我正在用java在opengl中构建一个交通信号。我尝试使用for循环(充当计时器)进行彩色解析。我的代码目前只返回矩阵,没有颜色。我已经附上我已经尝试导入颜色作为一个java库,但没有工作以及。
有解决办法吗???
public class CS2150Coursework extends GraphicsLab
{
private Colour clrr;
private Colour timer() {
for (int i = 0; i < 13; i ++ ) {
if (i <= 3) {
clrr = Colour.RED;
// System.out.print(clrr + "loop" + i);
}
else if (i >=4 && i <= 8) {
clrr = Colour.ORANGE;
// System.out.print(clrr + "loop" + i);
}
else if (i >=9 && i <= 13) {
clrr = Colour.GREEN;
// System.out.print(clrr + "loop" + i);
}
}
return clrr;
}
protected void renderScene()
{
//draw trffic light
GL11.glPushMatrix();
{
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
GL11.glTranslatef(0.0f, -1.0f, -6.0f);
// GL11.glRotatef(10, 40, 0, 0);
drawTrafficLight(clrr);
}
GL11.glPopMatrix();
// position and draw the second cube
GL11.glPushMatrix();
{
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
GL11.glTranslatef(0.0f, 0.0f, -6.0f);
drawTrafficLight(clrr);
}
GL11.glPopMatrix();
// position and draw the third cube
GL11.glPushMatrix();
{
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
GL11.glTranslatef(0.0f, 1.0f, -6.0f);
drawTrafficLight(clrr);
}
GL11.glPopMatrix();
}
private void drawTrafficLight(Colour clr)
{
clrr = clr;
System.out.println(clr);
// the vertices for the cube (note that all sides have a length of 1)
Vertex v1 = new Vertex(-0.5f, -0.5f, 0.5f);
Vertex v2 = new Vertex(-0.5f, 0.5f, 0.5f);
Vertex v3 = new Vertex( 0.5f, 0.5f, 0.5f);
Vertex v4 = new Vertex( 0.5f, -0.5f, 0.5f);
Vertex v5 = new Vertex(-0.5f, -0.5f, -0.5f);
Vertex v6 = new Vertex(-0.5f, 0.5f, -0.5f);
Vertex v7 = new Vertex( 0.5f, 0.5f, -0.5f);
Vertex v8 = new Vertex( 0.5f, -0.5f, -0.5f);
// draw the near face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v3.submit();
v2.submit();
v1.submit();
v4.submit();
}
GL11.glEnd();
// draw the left face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v2.submit();
v6.submit();
v5.submit();
v1.submit();
}
GL11.glEnd();
// draw the right face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v7.submit();
v3.submit();
v4.submit();
v8.submit();
}
GL11.glEnd();
// draw the top face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v7.submit();
v6.submit();
v2.submit();
v3.submit();
}
GL11.glEnd();
// draw the bottom face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v4.submit();
v1.submit();
v5.submit();
v8.submit();
}
GL11.glEnd();
// draw the far face:
GL11.glBegin(GL11.GL_POLYGON);
{
clr.submit();
v6.submit();
v7.submit();
v8.submit();
v5.submit();
}
GL11.glEnd();
}
}
下面是我的色彩课
package GraphicsLab;
import org.lwjgl.opengl.GL11;
/**
* Encapsulates the concept of a colour consisting of red, green and blue components
*
* @author Anthony Jones and Dan Cornford
*/
public class Colour
{
// some commonly used colours
public static final Colour RED = new Colour(1.0f,0.0f,0.0f);
public static final Colour GREEN = new Colour(0.0f,1.0f,0.0f);
public static final Colour PITCHGREEN = new Colour(0.20f,0.60f,0.20f);
public static final Colour BLUE = new Colour(0.0f,0.0f,1.0f);
public static final Colour YELLOW = new Colour(1.0f,1.0f,0.0f);
public static final Colour PINK = new Colour(1.0f,0.0f,1.0f);
public static final Colour CYAN = new Colour(0.0f,1.0f,1.0f);
public static final Colour BLACK = new Colour(0.0f,0.0f,0.0f);
public static final Colour WHITE = new Colour(1.0f,1.0f,1.0f);
public static final Colour ORANGE = new Colour(238,154,0);
/**
* Constructs a Colour object from its RGB components with a float in the range 0-1.
* @param red The Colour's red component
* @param green The Colour's green component
* @param blue The Colour's blue component
*/
public Colour(float red, float green, float blue)
{
this.red = red;
this.green = green;
this.blue = blue;
}
/**
* Constructs a Colour object from its RGB components as integers
* @param red The Colour's red component (int 0-255)
* @param green The Colour's green component (int 0-255)
* @param blue The Colour's blue component (int 0-255)
*/
public Colour(int red, int green, int blue)
{
this.red = ((float) red)/255.0f;
this.green = ((float) green)/255.0f;
this.blue = ((float) blue)/255.0f;
}
/**
* Submits this Colour to OpenGL using an immediate mode call
*/
public final void submit()
{ GL11.glColor3f(red, green, blue);
}
/**the red component of this colour */
private float red;
/**the green component of this colour */
private float green;
/**the blue component of this colour */
private float blue;
}
暂无答案!
目前还没有任何答案,快来回答吧!