problem loading Float Buffer correctly

Hi,
I’m having a problem with loading the x,y,z vertices the problem is, is that I get the vertices loaded which resemble a Cube but I keep getting a vertice in the middle of the cube that shouldnt be their ?


private float[]pointsf = {  1.000000f, -1.000000f, -1.000000f,
                    1.000000f, -1.000000f, 1.000000f,
                  -1.000000f, -1.000000f, 1.000000f,
                                 -1.000000f, -1.000000f, -1.000000f,
                                   1.000000f, 1.000000f,  -0.999999f,
                                   0.999999f, 1.000000f,  1.000001f,
                                 -1.000000f, 1.000000f,  1.000000f,
                                 -1.000000f, 1.000000f, -1.000000f };

private FloatBuffer rectVertices;

@Override
   public void display(GLAutoDrawable gld ) 
   {
      // TODO Auto-generated method stub
      GL2 gl = gld.getGL().getGL2();
      
      gl.glClear( GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT );
      
      gl.glMatrixMode( GL2.GL_MODELVIEW );
      
      gl.glLoadIdentity();
      
      gl.glTranslatef( 0.0f, 0.0f, -5.0f );
      
      gl.glRotatef( 0, 1.0f, 0.0f, 0.0f );
      gl.glRotatef( 0, 0.0f, 1.0f, 0.0f );
      
      rectVertices = GLBuffers.newDirectFloatBuffer( pointsf.length );      
      rectVertices.put( pointsf );
      rectVertices.rewind();         
      
      gl.glVertexPointer( 3, GL2.GL_FLOAT, 0, rectVertices );
      gl.glEnableClientState( GL2.GL_VERTEX_ARRAY );
      gl.glNormal3f( 0,0,1 );
      gl.glDrawArrays( GL2.GL_POINTS, 0, pointsf.length );  // Generate the polygon using 4 vertices.
      gl.glDisableClientState( GL2.GL_VERTEX_ARRAY );
      
   }

public void init(GLAutoDrawable gld ) 
   {
      // TODO Auto-generated method stub
      GL2 gl = gld.getGL().getGL2();
      glu = new GLU();
      gl.glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
      
      gl.glEnable( GL2.GL_DEPTH_TEST );
      
      gl.glMatrixMode( GL2.GL_PROJECTION );
      
      gl.glLoadIdentity();
      
      glu.gluPerspective( 45.0, 500.0 / 500.0, 1.0, 500.0 );
      
      gl.glPointSize( 5.0f );   
      
   }



I would of tried to show this in a image but cant figure out how to load the image?

[ img ]
src = “C:\Documents and Settings\Administrator\My Documents\My Pictures\pointArray.bmp”/>
[/img]

Double posting is not your friend :frowning:

But there should be an attach option when writing a post that should let you put images up. They might have to be png or jpg’s

Hi,
I figured out the problem the cube requires 8 vertice where I was putting in the length of the array this does work but interestingly puts a vertice in the middle of the cube, and also interestingly if you don’t create any x, y or z coordinates it will create a vertice in the middle without any coordinates as long as you have a number in the vertice in the glDrawArrays.


gl.glDrawArrays( GL2.GL_POINTS, 0, 1 );

Wrong


 gl.glDrawArrays( GL2.GL_POINTS, 0, pointsf.length );

Right


gl.glDrawArrays( GL2.GL_POINTS, 0, 8 ); 

OpenGL is a state machine, including its current vertex position. By default this is at (0, 0, 0) so if you just call glDrawArrays(GL_POINTS, 0, 1) you’ll render a point at that position.

Instead of using pointsf.length, you want to divide by 3 since it’s asking for the number of vertices, not array elements to use.

With the change to glDrawArrays, did your problem go away?