devkitPro.org
https://devkitpro.org/

Easy GL2D
https://devkitpro.org/viewtopic.php?f=25&t=2333
Page 3 of 6

Author:  relminator [ Fri Feb 18, 2011 3:24 am ]
Post subject:  Re: Easy GL2D

Yo, Enay. I have just updated the lib. See if it fixes some of the issues you posted.

Better Docs too.

;*)

Author:  ENAY [ Fri Feb 18, 2011 3:46 am ]
Post subject:  Re: Easy GL2D

Thanks man. I will take a look now. :)

Author:  ENAY [ Fri Feb 18, 2011 4:23 am ]
Post subject:  Re: Easy GL2D

[snip]

Author:  Discostew [ Fri Feb 18, 2011 4:40 am ]
Post subject:  Re: Easy GL2D

ENAY wrote:
Compiling the 'sprites' example gives me the error:-
Code:
gl2d.c:(.text+0x16da): undefined reference to 'glColorTableEXT'


I hope this helps. For now I will revert back to the previous version of your library.


Have you updated to the newest version of libnds?

Author:  ENAY [ Fri Feb 18, 2011 4:41 am ]
Post subject:  Re: Easy GL2D

Aaaah, no. That might explain everything ;)

[edit]Updated!

Looks like the GL2D library has changed a bit to do with pallettes so I need to modify my source code.

By the way Relminator I've also just reminded myself of something, in the features list you mention that this library supports 'alpha' but yet there are no parameters (as it seems) in your functions to enable to do so.

Keep up the good work :)

Author:  relminator [ Fri Feb 18, 2011 8:40 am ]
Post subject:  Re: Easy GL2D

ENAY wrote:
Aaaah, no. That might explain everything ;)

[edit]Updated!

Looks like the GL2D library has changed a bit to do with pallettes so I need to modify my source code.

By the way Relminator I've also just reminded myself of something, in the features list you mention that this library supports 'alpha' but yet there are no parameters (as it seems) in your functions to enable to do so.

Keep up the good work :)


Yeah, palettes are now bounded to the textures. Easier to use BTW.

Alpha support is via the textures you upload yourself. GL2D has nothing to do with it.

Author:  ENAY [ Fri Feb 18, 2011 9:40 am ]
Post subject:  Re: Easy GL2D

Well I am still having problems compiling. I get a lot of errors when it tries to create the .elf file.

Code:
linking jss-ds.elf
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glScreen2D':
gl2d.c:(.text+0x1b2): undefined reference to `glInit_C'
gl2d.c:(.text+0x518): undefined reference to `glGlobalData'
gl2d.c:(.text+0x6a2): undefined reference to `glMaterialf'
gl2d.c:(.text+0x6aa): undefined reference to `glMaterialf'
gl2d.c:(.text+0x6b2): undefined reference to `glMaterialf'
gl2d.c:(.text+0x6ba): undefined reference to `glMaterialf'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glPutPixel':
gl2d.c:(.text+0x7c0): undefined reference to `glBindTexture'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glLine':
gl2d.c:(.text+0x81e): undefined reference to `glBindTexture'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glBox':
gl2d.c:(.text+0x896): undefined reference to `glBindTexture'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glBoxFilled':
gl2d.c:(.text+0x942): undefined reference to `glBindTexture'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glBoxFilledGradient':
gl2d.c:(.text+0x9ca): undefined reference to `glBindTexture'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o):gl2d.c:(.text+0xa66): more undefined references to `glBindTexture' follow
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glLoadSpriteSet':
gl2d.c:(.text+0x1600): undefined reference to `glGenTextures'
gl2d.c:(.text+0x1608): undefined reference to `glBindTexture'
gl2d.c:(.text+0x1624): undefined reference to `glTexImage2D'
gl2d.c:(.text+0x163a): undefined reference to `glColorTableEXT'
c:/devkitPro/libnds/lib\libgl2d.a(gl2d.o): In function `glLoadTileSet':
gl2d.c:(.text+0x16a0): undefined reference to `glGenTextures'
gl2d.c:(.text+0x16a8): undefined reference to `glBindTexture'
gl2d.c:(.text+0x16c4): undefined reference to `glTexImage2D'
gl2d.c:(.text+0x16da): undefined reference to `glColorTableEXT'
collect2: ld returned 1 exit status
make[1]: *** [/c/work/devkitpro-stuff/jss-ds/jss-ds.elf] Error 1
rm gfx.s
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:19


Not sure where the problem lies, I noticed the source code in all of the examples has changed too so I have gone through every line of the source code and also compared the make files to see if anything else was changed. Perhaps I need to start a new project in devkitpro?




Ah yes, the Alpha support thing, I was getting confused between Alpha and Transparency. Indeed the command I was looking for was, for example:-

"glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE | POLY_ID(5));"

to have a percentage of drawing transparency.

Anyway, back to fault searching.

Author:  WinterMute [ Fri Feb 18, 2011 1:14 pm ]
Post subject:  Re: Easy GL2D

Looks like you're probably linking in the wrong order, libgl2d uses functions from libnds so it needs to be specified first in the LIBS line - i.e.
Code:
LIBS   :=   -lgl2d -lnds9


This brings up an interesting point though. As it stands now this library would probably serve users better if it was integrated into libnds rather than maintained separately. On the other hand I've already seen this working as a cross platform library on OSX, Windows and linux so it could potentially make for a nice piece of middleware if it were abstracted a bit more and included features for user input and audio output. The other way to go is to integrate this into libnds as it is now and build an abstraction layer on top of it later.

Anyone have any thoughts? I'll add a poll and a link to this post in the thread in a bit. I may go with the result of the vote or make an executive decision based on the general discussion.

Author:  ENAY [ Fri Feb 18, 2011 2:18 pm ]
Post subject:  Re: Easy GL2D

Thanks Wintermute, :D

That indeed worked, odd how before it worked with the parameters in reverse, I am using max mod library but that was always last. Anyway, thanks for that, it compiles ok now. It seems I always get beaten by the simplest of things.

Well, I think this library is really good. Although I've only been tinkering with the DS for a few weeks this library has really taken out a lot of low level programming and made things really easy to understand. I have had about 50 or so sprites rendering on both screens with backgrounds simultaneously without slowdown (slow in emulators though)
For 2D games I think this is ideal, you could easily make any kind of 2D game using this library on the DS.

If I had a suggestion, it would be that the library needs some sort of unload function, as currently there isn't really any way to know where your pointer is in memory. At some point I am probably going to want to swap around images in memory to transition to other graphics. Get rid of one image and replace it with another. Still not sure how I am going to do this but if there is a bit more automatic memory management (of course very difficult if you are using lots of different types of images) that would be great. To be safe I have simply made a 256x1024 image all tiled with everything I could possibly need. I have also opened up all the banks for memory.

Code:
// Set  Bank A to texture (128 kb)
   vramSetBankA( VRAM_A_TEXTURE );
   vramSetBankB( VRAM_B_TEXTURE );
   vramSetBankC( VRAM_C_TEXTURE );
   vramSetBankD( VRAM_D_TEXTURE );
   
   vramSetBankE(VRAM_E_TEX_PALETTE);


For now 512kb is more than enough for me. But yes, if there is a way to easily load images in and out of memory I would love to see that, even if it's just a limitation that you can only load in another image of the same type and colour depth that you first created, then I would be more than happy.

Not sure if this library needs more features for input or output. Better to leave it as a dedicated gfx library since loading sounds and detecting input is a lot simpler than loading and displaying graphics. Well that's just me anyway. But right now (aside from learning how to save and load files on a cartridge) I have pretty much everything I could possibly need.

Author:  relminator [ Fri Feb 18, 2011 2:45 pm ]
Post subject:  Re: Easy GL2D

Enay: LibNDS 1.5.0 can do dynamic textures.


Just glDeleteTexture() when you want to unload it. Then do a glLoad[Sprite/Tile]set() after that to load another texture.

Should work as long as you have enough VRAM allocated for textures.

BTW, pls. vote on the poll WM added.

edit: Could we have a look-see of your current game? ;*)

Page 3 of 6 All times are UTC [ DST ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/