Vertex Array - beginner problem

Hello.
I wont to create cube using Vertex Array but unfortunately I have problem. The problem is that the only one wall appear with second (left wall) something bad happening.
I also want to add that I haven’t any problem with creating cube using immediate mode.

OK, this is my code?


package com.applet;

import static org.lwjgl.opengl.GL11.GL_COLOR_ARRAY;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
import static org.lwjgl.opengl.GL11.GL_LEQUAL;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PERSPECTIVE_CORRECTION_HINT;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.GL_VERTEX_ARRAY;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glClearDepth;
import static org.lwjgl.opengl.GL11.glColorPointer;
import static org.lwjgl.opengl.GL11.glDepthFunc;
import static org.lwjgl.opengl.GL11.glDisableClientState;
import static org.lwjgl.opengl.GL11.glDrawArrays;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glEnableClientState;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glShadeModel;
import static org.lwjgl.opengl.GL11.glVertexPointer;
import static org.lwjgl.opengl.GL11.glViewport;
import static org.lwjgl.util.glu.GLU.gluPerspective;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.nio.FloatBuffer;

import javax.swing.JApplet;

import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.GL11;

import com.Conf;

public class CubeVA  extends JApplet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -730031275017948496L;
	private Canvas canvas;
	private Thread gameThread;
	boolean running = false;
	
	public void startLWJGL(){
		gameThread = new Thread (){
			
			public void run(){
				running = true;
				try {
					Display.setParent(canvas);
					Display.create();
					Display.setVSyncEnabled(true);
					initGL();
				} catch (LWJGLException e) {
					e.printStackTrace();
				}
				gameLoop();
			}

		};
		gameThread.start();
	}
	
	public void stopLWJGL(){
		running = false;
		try {
			gameThread.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public void destroy(){
		remove(canvas);
		super.destroy();
	}
	
	public void init(){
		setLayout(new BorderLayout());
		canvas = new Canvas(){
			/**
			 * 
			 */
			private static final long serialVersionUID = 5972822387678455353L;

			public final void addNotify(){
				super.addNotify();
				startLWJGL();
			}
			
			public final void removeNotify(){
				stopLWJGL();
				super.removeNotify();
			}
		};
		canvas.setSize(Conf.W, Conf.H);
		setSize(Conf.W, Conf.H);
		canvas.setBackground(Color.BLACK);
		canvas.setFocusable(true);
		canvas.requestFocus();
		canvas.setIgnoreRepaint(false);
		add(canvas);
	}
	
	private void initGL() {
		glViewport(0, 0,  Conf.W,Conf.H); // Reset The Current Viewport
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		gluPerspective(45.0f, ((float)Conf.W / (float)Conf.H) , 0.1f, 100f);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		
		
		glShadeModel(GL11.GL_SMOOTH); // Enables Smooth Shading
		GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background
		glClearDepth(1.0f); // Depth Buffer Setup
		glEnable(GL_DEPTH_TEST); // Enables Depth Testing
		glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
		GL11.glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST); // Really Nice Perspective Calculations
		
	}
	float rquad; // Angle For The Quad
	public void gameLoop(){
		final int amountOfVertices = 8;
        final int vertexSize = 3;
        final int colorSize = 3;
		
        FloatBuffer vertexData = BufferUtils.createFloatBuffer(amountOfVertices * vertexSize);
        vertexData.put(new float[]{-0.5f, 0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.5f, -0.5f, -1.0f, 0.5f, 0.5f, -1.0f});
        vertexData.flip();

        FloatBuffer colorData = BufferUtils.createFloatBuffer(amountOfVertices * colorSize);
        colorData.put(new float[]{1, 0.2f, 0.2f, 0.2f, 1, 0.2f, 0.2f, 0.2f, 1});
        colorData.flip();
        
		while(running) {
			update();
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			glLoadIdentity();//Matrix reseting.
			GL11.glTranslatef(0.0f, 0.0f, -6.0f); // Move Right And Into The Screen
			GL11.glRotatef(rquad, 0.0f, 1.0f, 0.5f); // Rotate The Cube On X, Y & Z
			
			glEnableClientState(GL_VERTEX_ARRAY);
            glEnableClientState(GL_COLOR_ARRAY);
			
            glVertexPointer(vertexSize, 0, vertexData);
            glColorPointer(colorSize, 0, colorData);
            
            glDrawArrays(GL_QUADS, 0, amountOfVertices);
            
            glDisableClientState(GL_COLOR_ARRAY);
            glDisableClientState(GL_VERTEX_ARRAY);
			
			Display.sync(60);
			Display.update();
		}
		
		Display.destroy();
	}
	
	private void update(){
		rquad -= 1.55f; // Decrease The Rotation Variable For The Quad
	}

}


You probably missed the vertex array…

Ehh sorry I pasted code from wrong class.

Why do you only have 3 RGB colors in your color buffer?

Ehhh, I should set white background :wink:
Thanks.