DynaDream's dynalib GUI Demo

00000000000000000000000000000000
0
Anonymous Mar 28, 2009 at 14:00

09-03-27.jpg

Description
Hi all,

This is a demo showing a preview of a graphical user interface system that is part of a large development kit developed by me over the years.

The system is totally platform independant and has no source or binary dependecies (Except for the OpenGL driver for the graphics).

Many features are included in it like dynamic array, maps, hashs, lists, signal/slots system, reference counted memory management, object’s reflection-introspection, a framework that allow the creation of simple projects or more complex and GUI rich 3d applications that include 3d scenegraph management, soft and rigid body dynamics and many more.

It feature also very small and fast executables.

Actually it run on all major Linux/Unix distributions as well as Windows, MaxOSX and Haiku. Both 32 and 64 bits platform supported. It runs even on the iPhone.

The SDK is developed in C and feature a simple and clean object oriented system that support class inheritance and functions overloading.

A Windows demo executable can be downloaded from:

dldemo.zip

In order to run the demo, you may need the VisualC++ 2005 SP1 runtime that can be downloaded from the Microsoft web site.

Note for Vista’s users:

The demo is compiled with a non recent version of the Windows platform SDK so, if you are running Vista, you may want to disable the Aero feature as it can considerably slow down the application.

I may provide the demo for other platforms if requested.

Best Regards,

Carlo Lanzotti

DynaDream - www.dynadream.com

9 Replies

Please log in or register to post a reply.

878867f67a688c1e3c28b2ed740e5607
0
soconne 101 Mar 28, 2009 at 20:01

That’s awesome. Are you going to share any of the architectural details? Do you render each window to its own texture? Is everything just drawn every frame? What sort of event system are you using? Delegates, callbacks, ect…?

For things like images, fonts…do you pack them all into one large atlas, or do they each reside in their own texture?

Since you’re using OpenGL, how did you handle pixel perfect rendering? (i.e. what are the values you’re sending to glOrtho and/or sending to glTranslate to offset pixel centers).

B4b244eeebece864cdeaae90700366c1
0
Carlo_Lanzotti 101 Mar 28, 2009 at 22:25

@soconne

That’s awesome. Are you going to share any of the architectural details? Do you render each window to its own texture? Is everything just drawn every frame? What sort of event system are you using? Delegates, callbacks, ect…?

For things like images, fonts…do you pack them all into one large atlas, or do they each reside in their own texture?

Since you’re using OpenGL, how did you handle pixel perfect rendering? (i.e. what are the values you’re sending to glOrtho and/or sending to glTranslate to offset pixel centers).

Hi, thanks for the ‘awesome’ :-)

Of course, I will share some details:

1) No, no texture used for windows rendering, all drawed by using basic primitive functions.

2) Yes, everything is drawed each frame.

3) Event system are delegate based.

4) Images, fonts etc with the OpenGL driver reside in it’s own texture.

5) Pixel perfect rendering was a problem with old drivers, so I had to find some way to overcome this. Anyway, depending on the primitive rendered, I mostly use the suggested OpenGL’s redbook offset pixel value of 0.375, but as I stated, this depends on what and where you are drawing.

Feel free to ask other questions, I will be glad to reply.

Best Regards,

Carlo Lanzotti

B4b244eeebece864cdeaae90700366c1
0
Carlo_Lanzotti 101 Mar 28, 2009 at 22:26

Hi all,

Some peoples (From other source) emailed me requesting a Linux and a MacOSX demo. Here is the Linux version (32 bit) link for the download:

http://win.dynadream.com/downloads/dldemo-2009-linux32.tar.gz

The demo was tested with Ubuntu 6.x and 8.x but should work without problems on other distributions too.

To run the demo use the included shell script (./dldemo.sh)

I will release a MacOSX version shortly.

Best Regards,

Carlo Lanzotti

878867f67a688c1e3c28b2ed740e5607
0
soconne 101 Mar 29, 2009 at 02:19

@Carlo Lanzotti

Hi, thanks for the ‘awesome’ :-)

5) Pixel perfect rendering was a problem with old drivers, so I had to find some way to overcome this. Anyway, depending on the primitive rendered, I mostly use the suggested OpenGL’s redbook offset pixel value of 0.375, but as I stated, this depends on what and where you are drawing.

Carlo Lanzotti

Yeah, that’s how I did it too in my GUI I’m developing. I was just wondering if you had found a different method.

6837d514b487de395be51432d9cdd078
0
TheNut 179 Mar 30, 2009 at 01:05

YO. Nicely done ;) Writing a GUI system is no easy task. I pulled my hair out writing mine and I’m still not satisfied with it.
@Carlo Lanzotti

It feature also very small and fast executables.

This is about the only thing I’ll ding you on. My CPU (intel core 2) was at 50%, so it was pigging out on one of my cores (and yes, I did close the spinning naked woman :). This should be something you enhance on since it’s pivatal a GUI system not consume up much resource.

On another note,@soconne

Is everything just drawn every frame?

A while back my team and I did some research and prototyping on a region based rendering technique in OpenGL, to support non-hardware accelerated graphics cards for our 2D based game. There was slight gains, almost to the point of substandard playability, but it was not worth it. With today’s games and complexities, I would not suggest anyone waste their time on that. Even the crappy systems sold today offer cards with minimal shader support. More than enough power to handle these graphics.

8676d29610e6c98d6dd2d9c38528cd9c
0
alphadog 101 Mar 30, 2009 at 12:57

There are many GUI toolkits/SDKs. Some advice: nothing in your blurb sells me on dynalib. You should have some text in there that answers questions like “Why would I want to use this?”

B4b244eeebece864cdeaae90700366c1
0
Carlo_Lanzotti 101 Mar 30, 2009 at 13:57

@alphadog

There are many GUI toolkits/SDKs. Some advice: nothing in your blurb sells me on dynalib. You should have some text in there that answers questions like “Why would I want to use this?”

Hi,

As I stated, this is a tech preview, not a final product. I will post all the needed informations when the product will be ready.

Best Regards,

Carlo Lanzotti

B4b244eeebece864cdeaae90700366c1
0
Carlo_Lanzotti 101 Mar 30, 2009 at 23:43

@TheNut

YO. Nicely done ;) Writing a GUI system is no easy task. I pulled my hair out writing mine and I’m still not satisfied with it.

Never pull your hair out, you’ll need at some point ;-)

This is about the only thing I’ll ding you on. My CPU (intel core 2) was at 50%, so it was pigging out on one of my cores (and yes, I did close the spinning naked woman :). This should be something you enhance on since it’s pivatal a GUI system not consume up much resource.

Yes, you are right, but you tried it on a one CPU system? ;-)

On another note, A while back my team and I did some research and prototyping on a region based rendering technique in OpenGL, to support non-hardware accelerated graphics cards for our 2D based game. There was slight gains, almost to the point of substandard playability, but it was not worth it. With today’s games and complexities, I would not suggest anyone waste their time on that. Even the crappy systems sold today offer cards with minimal shader support. More than enough power to handle these graphics.

You mean the old and well-done-made dirty regions approach? Test I made recently converge with you. With today hardware it make non-sense, but still I recommend young programmers to deal with it! :-)

Carlo Lanzotti

0a4c8c2e2837e9754f393e2d4a02115a
0
tigerlc 101 May 22, 2009 at 20:05

@Carlo Lanzotti

Never pull your hair out, you’ll need at some point ;-)

Yes, you are right, but you tried it on a one CPU system? ;-)

You mean the old and well-done-made dirty regions approach? Test I made recently converge with you. With today hardware it make non-sense, but still I recommend young programmers to deal with it! :-)

Carlo Lanzotti

For a GUI system without many animations, dirty region-based approach should still be better.