Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  problem loading Float Buffer correctly  (Read 530 times)
0 Members and 2 Guests are viewing this topic.
Offline PinHead

JGO n00b
*

Posts: 6



« on: 2011-11-17 15:13:10 »

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 ?

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
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]
Offline lhkbob

JGO Neuromancer
****

Posts: 1174
Medals: 35



« Reply #1 on: 2011-11-17 15:25:18 »

Double posting is not your friend Sad

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

Offline PinHead

JGO n00b
*

Posts: 6



« Reply #2 on: 2011-11-17 16:16:42 »

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.

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


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


Right
1  
gl.glDrawArrays( GL2.GL_POINTS, 0, 8 ); 
Games published by our own members! Go get 'em!
Offline lhkbob

JGO Neuromancer
****

Posts: 1174
Medals: 35



« Reply #3 on: 2011-11-17 17:28:35 »

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?

Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.073 seconds with 20 queries.