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  
  MappedObject  (Read 611 times)
0 Members and 2 Guests are viewing this topic.
Offline integeruser

JGO n00b
*

Posts: 12
Medals: 9



« on: 2012-02-02 17:35:50 »

Hi, i'm trying to understand how this http://lwjgl.org/javadoc/org/lwjgl/util/mapped/MappedObject.html class works. I think this is what i need to convert in a standard way c++ structs; i searched a bit but i didn't find any resources :\ I want to use this class properly from the start, so can someone help me? Maybe with a simple example?  Grin
Thanks in advance,

Francesco
Online ra4king

JGO Kernel
*****

Posts: 3158
Medals: 196


I'm the King!


« Reply #1 on: 2012-02-02 22:17:51 »

The Official Thread by Riven

Offline integeruser

JGO n00b
*

Posts: 12
Medals: 9



« Reply #2 on: 2012-02-03 09:42:15 »

Thanks for the reply.
I saw that thread but the links in the first post are broken and the example class MappedVec3 doesn't compile for me so i thought it is an old thread.
The compilation fails because "the attribute sizeof is undefined for the annotation type MappedType".
I referenced to the build path lwjgl_util.jar. Am i missing something?
Games published by our own members! Go get 'em!
Offline theagentd

JGO Wizard
****

Posts: 1392
Medals: 88



« Reply #3 on: 2012-02-03 10:40:14 »

An example of a mapped particle inner class (more like a struct though...):
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  
    protected static class MappedParticle extends MappedObject {

        @MappedField(byteOffset = 0)
        private float x;
        @MappedField(byteOffset = 4)
        private float y;
        @MappedField(byteOffset = 8)
        private byte r;
        @MappedField(byteOffset = 9)
        private byte g;
        @MappedField(byteOffset = 10)
        private byte b;
        @MappedField(byteOffset = 11)
        private byte a;

        public void init(float x, float y, float r, float g, float b) {
            this.x = x;
            this.y = y;
            this.r = (byte) (r * 255);
            this.g = (byte) (g * 255);
            this.b = (byte) (b * 255);
            a = (byte) 255;
        }

        public void update(float xSpeed, float ySpeed) {
            x += xSpeed;
            y += ySpeed;
        }
    }


Starting the program with MappedObjects enabled (ParticleTest8 is my main class name):
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
    public static void main(String[] args) {
        MappedObjectTransformer.register(MappedParticle.class);
        if (MappedObjectClassLoader.fork(ParticleTest8.class, args)) {
            return;
        }

        //releaseInit();

        new ParticleTest8().gameloop();
    }


Creating and using individual objects:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
ByteBuffer buffer = BufferUtils.createByteBuffer(particleByteSize * numParticles);
MappedParticle mappedParticleData = MappedParticle.map(buffer);

//OR (untested code):
//MappedParticle mappedParticleData = MappedParticle.malloc(numParticles);
//ByteBuffer buffer = mappedParticleData.backingByteBuffer();

for (int i = 0; i < numParticles; i++) {
    mappedParticleData.view = i;
    mappedParticleData.init(...);
}


This should get you started...

There is no god.
Offline Spasi

JGO Ninja
***

Posts: 589
Medals: 26


Molon Lave


« Reply #4 on: 2012-02-03 13:41:33 »

I'd just like to point out that the @MappedField annotation is optional. It's useful only when you require custom padding/alignment of the mapped fields.

For a complete example see org.lwjgl.test.opengl.sprites.SpriteShootoutMapped in the LWJGL distribution.
Offline integeruser

JGO n00b
*

Posts: 12
Medals: 9



« Reply #5 on: 2012-02-03 17:08:34 »

Thank you guys, i understand now.
I played a bit with these classes, and i realized that they make code too difficult to read for the project I'm doing, so i won't use them.
But thanks again for the help Smiley
 
Francesco
 
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.091 seconds with 20 queries.