Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (407)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  MappedObject  (Read 1173 times)
0 Members and 1 Guest are viewing this topic.
Offline integeruser

Junior Member


Medals: 11



« Posted 2012-02-02 23: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
Offline ra4king

JGO Kernel


Medals: 264
Projects: 2


I'm the King!


« Reply #1 - Posted 2012-02-03 04:17:51 »

The Official Thread by Riven

Offline integeruser

Junior Member


Medals: 11



« Reply #2 - Posted 2012-02-03 15: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! Check 'em out!
Try the Free Demo of Droid Assault
Offline theagentd
« Reply #3 - Posted 2012-02-03 16: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...

Myomyomyo.
Offline Spasi
« Reply #4 - Posted 2012-02-03 19: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

Junior Member


Medals: 11



« Reply #5 - Posted 2012-02-03 23: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]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars and Titan!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (93 views)
2013-05-17 21:29:12

alaslipknot (101 views)
2013-05-16 21:24:48

gouessej (131 views)
2013-05-16 00:53:38

gouessej (126 views)
2013-05-16 00:17:58

theagentd (137 views)
2013-05-15 15:01:13

theagentd (125 views)
2013-05-15 15:00:54

StreetDoggy (166 views)
2013-05-14 15:56:26

kutucuk (188 views)
2013-05-12 17:10:36

kutucuk (191 views)
2013-05-12 15:36:09

UnluckyDevil (198 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.154 seconds with 21 queries.