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  
  Trouble with glVertexArray and glDrawElements  (Read 1809 times)
0 Members and 1 Guest are viewing this topic.
Bornter
Guest
« on: 2003-07-04 09:57:18 »

Hi.

My first Jogl testes by manually drawing polygons (via glBegin, glVertex3f and so on) work fine. :-)
However using the faster glVertexPointer() and then glDrawElements() doesn't do anything, except to throw exceptions to me after a while. :-(
From my former Gl4java tests I got the vertex array and the connection array. However moving this code to Jogl fails for me so far.
What am I doing wrong? Any hints appreciated. :-)

Here's the relevant part:
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  
// SIZE_FLOAT = 4
// SIZE_SHORT = 2

/** In some initialisation method */

// float mypoints[]   : holds each vertex (x, y, z)
ByteBuffer bbuffer = ByteBuffer.allocateDirect(mypoints.length * SIZE_FLOAT);
for (short i = 0; i < mypoints.length; i++) {
  bbuffer.putFloat(mypoints[i]);
}
bbuffer.rewind();
bufPoints = bbuffer.asFloatBuffer();

// short conns[]   : holds (0, 1, 2), (1, 2, 3) and so on.
ByteBuffer bbuffer = ByteBuffer.allocateDirect(conns.length * SIZE_SHORT);
for (short i = 0; i < conns.length; i++) {
  bbuffer.putShort(conns[i]);
}
bbuffer.rewind();
bufConns = bbuffer.asShortBuffer();

// and so on for colours, etc. The Buffers should be OK.


/** Now in the diplay() method */


gl.glEnableClientState(gl.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, gl.GL_FLOAT, 0, bufPoints);
// similar to colours, etc.
gl.glDrawElements(gl.GL_TRIANGLES, bufConns.limit(), gl.GL_SHORT, bufConns);

Do I have to use "gl.GL_UNSIGNED_SHORT" or "gl.GL_SHORT"  in the DrawElements-call? None of them work for me. ;-)

By the way: do I really have to specify the Float_Size (4 Bytes on many machines) and Short_Size (2 bytes on many machines) ? However: if my Java application is to run on a platform where I don't know its Float_Size?

Greetings and thank you.

-ric
Offline abies

Sr. Member
**

Posts: 456



« Reply #1 on: 2003-07-04 15:40:09 »

Just a blind guess - maybe putting buffers in nativeOrder would help ?

Artur Biesiadowski
Bornter
Guest
« Reply #2 on: 2003-07-05 01:08:28 »

Quote
Just a blind guess - maybe putting buffers in nativeOrder would help ?

Hi. I did now insert a line:
"bbuffer.order(ByteOrder.nativeOrder())"
before the "return bbuffer.asFloatBuffer()"
However unfortunately with no visible effect.
These low-level Buffers look to be too much for me...
Games published by our own members! Go get 'em!
Offline swpalmer

JGO Kernel
*****

Posts: 3438
Medals: 4


Where's the Kaboom?


« Reply #3 on: 2003-07-07 06:17:39 »

You need to set the order before you fill the buffer.

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.123 seconds with 25 queries.