Horde3D

Next-Generation Graphics Engine
It is currently 28.11.2024, 02:49

All times are UTC + 1 hour




Post new topic Reply to topic  [ 27 posts ]  Go to page 1, 2  Next
Author Message
PostPosted: 01.01.2010, 21:44 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
There is one thing that is missing in Horde3D - and that's a proper GUI system, integrated into the engine, easy to use, as powerful as possible and configurable like Horde3D is. I actually tried to write a GUI system that is good enough for me, and would aks others who think the same to help me with this quite large task.

Image
Image
(Now I only have to find a way to get rid of that KSnapshot icon in the images -.-)

Features:
- Implemented as a scene node, allows for 3D GUIs and 2D ones without any difference.
- Using as little batches as possible (although rebuilding them can still be optimized).
- GUI elements implemented so far: Button, Label, Frame.
- Completely skinnable.
- Using a mix out of relative and absolute (pixel) coordinates allowing for pixel-accurate layouts at any window size.
- High-quality font rendering with any ttf font at any size using FreeType and dynamic glyph caching.

To be implemented:
- More GUI elements. MUCH more.
- The font system needs some love, especially kerning.
- Plugin system for own gui elements.

Source Code:

http://github.com/mgottschlag/Horde3DGUI

I really need help with this, and I think this is something important for Horde3D.
I know it is still in a very early phase, but nevertheless I posted it to get hints with the overall design. There isn't much documentation on the extension yety, sorry, I'll start with that right now.


Top
 Profile  
Reply with quote  
PostPosted: 01.01.2010, 22:21 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
Great work so far.

Apart from kerning or other graphical issues,... how do you do the interaction? I think having something like flick lists etc. would be nice, but requires kinematic scrolling and some kind of "gesture" recognition to differenciate between klicks and slides.


Top
 Profile  
Reply with quote  
PostPosted: 01.01.2010, 22:53 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
Added some doxygen comments to the C++ bindings.

Quote:
how do you do the interaction? I think having something like flick lists etc. would be nice, but requires kinematic scrolling and some kind of "gesture" recognition to differenciate between klicks and slides.


Well, I'm not quite there yet, nearly no input handling yet :D
That would be most probably implemented on the GUI element level though, the rest is just passing through mouse movement and keyboard hits.

The only special part in the interaction currently is computing the local coordinates from the camera direction really :)


Top
 Profile  
Reply with quote  
PostPosted: 01.01.2010, 23:22 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
Thanks phoenix, this looks really promising!

BTW, do you happen to know Sean Barret's public domain truetype rasterizer? It is just one file and could avoid the FreeType dependency.


Top
 Profile  
Reply with quote  
PostPosted: 02.01.2010, 00:32 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
hm, although that rasterizer at least looks as if it produced uglier glyphs (no hints used, no real subpixel rendering).


Top
 Profile  
Reply with quote  
PostPosted: 03.01.2010, 03:29 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
marciano wrote:
BTW, do you happen to know Sean Barret's public domain truetype rasterizer? It is just one file and could avoid the FreeType dependency.
He has a goldmine of tiny software - I hadn't even seen that one before.
phoenix64 wrote:
hm, although that rasterizer at least looks as if it produced uglier glyphs (no hints used, no real subpixel rendering).
Probably, but then again, freetype is a fairly heavy dependency on platforms where it isn't installed by default: i.e. Windows and Mac (Mac has freetype, but there have been many issues with the version installed by default).

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
PostPosted: 03.01.2010, 13:58 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
I think for an extension it would be ok to have freetype2 as a dependency. Since it doesn't have other dependencies it is even more lightweight than e.g. the sound extension with OpenAL. And with it's ability to run on ARM Cpus it would be also able to use it with mobile devices.


Top
 Profile  
Reply with quote  
PostPosted: 03.01.2010, 21:07 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
Well, I definately plan to integrate that text library. Just not as the only solution, but rather as a compile-time option.

Oh, and kerning is implemented in the current git.


EDIT: I have now implemented font rendering using the alternative library, and the text actually looks better in 3D - because it is washed out much more, which means that larger bitmaps are created, while freetype currently there suffers because of aliasing effects as I render much smaller polygons with sharp edges. For 2D GUIs, FreeType probably is much better though as long as its output is rendered 1:1.

EDIT2: Can anyone now maybe test it on windows for me?


Top
 Profile  
Reply with quote  
PostPosted: 04.01.2010, 11:57 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
I only did a quick test with VS2005 and apart from some very small changes it did run quite well.

Didn't checked the CMake configuration but instead created some VS project files.


Attachments:
File comment: Changes for VS2005
patch.zip [6.53 KiB]
Downloaded 1879 times
Top
 Profile  
Reply with quote  
PostPosted: 05.01.2010, 01:13 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
I just tried out the demo and must say it is pretty cool. Great job you are doing there phoenix!

Also, having both font rendering options is a good thing. As already stated, stb_truetype still seems to be inferior in quality and performance compared to freetype (see Sean's comment here) but being able to avoid that huge dependency can still be a win. Everyone can decide now what he prefers.

BTW, there are a lot of type conversion warnings but they should be easy to clean up later.


Top
 Profile  
Reply with quote  
PostPosted: 05.01.2010, 19:18 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
Quote:
BTW, there are a lot of type conversion warnings but they should be easy to clean up later.

I don't see those with GCC - someone with msvc please provide a patch if you can.

Also I fixed the quality problems with freetype by adding more padding and added check box elements. More to come later. :)

Oh, and I already have some points which imho could be improved in Horde3D, e.g.:
- Creating unique names for dynamically created resources (also added to the outside API for manually creating resources on the user side) like "internal_resource_124521".
- Extensions currently are not what they should be - they usually have to be compiled into the engine as horde3ds internals are usually hidden to the outer world. This is a good thing, but it greatly limits external plugins. I currently don't see any real workaround, to me exporting the internals and adding a version check to be used by plugins is the only thing that could work.
- Texture mipmaps - can they somehow automatically produced? I didn't see any solution when I created the font texture, while I would expect it to automatically generate smaller mipmaps (that OpenGL variable is set somewhere for mipmap textures), I had to manually create all mipmaps for mipmapping to work properly. Probably my mistake, please someone help me there.
- Several other points I have currently forgotten.

Next on my TODO list are now finally edit boxes, modal widgets, list boxes, GUI layout resources (like scene graph resources).

Edit: Oh, and many thanks to Volker for the patch. Sry, I won't be able to keep the project files up to date.


Top
 Profile  
Reply with quote  
PostPosted: 05.01.2010, 23:12 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
Sorry, it is too many to fix them quickly now, so here is the list. Float to int conversions are quite slow. If you can't avoid them and are fine with rounding instead of truncation, you can use ftoi_r from utMath.h for better performance.
Code:
Warning   1   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   2   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   3   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   4   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   5   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   6   warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\checkbox.cpp   135   
Warning   7   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   8   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   9   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   10   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   11   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   12   warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\extension.cpp   334   
Warning   13   warning C4267: 'initializing' : conversion from 'size_t' to 'stbtt_int32', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\stb_truetype.h   1769   
Warning   14   warning C4244: '=' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\fontfileresource.cpp   162   
Warning   15   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   16   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   17   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   18   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   19   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   20   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   21   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   22   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   23   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   24   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   25   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   26   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   27   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   28   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   29   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   30   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   84   
Warning   31   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   109   
Warning   32   warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   150   
Warning   33   warning C4267: 'argument' : conversion from 'size_t' to 'Horde3DGUI::ElementHandle', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   308   
Warning   34   warning C4267: 'return' : conversion from 'size_t' to 'Horde3DGUI::ElementHandle', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   309   
Warning   35   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   383   
Warning   36   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   383   
Warning   37   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   385   
Warning   38   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   385   
Warning   39   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   390   
Warning   40   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   390   
Warning   41   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   391   
Warning   42   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   391   
Warning   43   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   406   
Warning   44   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   406   
Warning   45   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   408   
Warning   46   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   408   
Warning   47   warning C4018: '>' : signed/unsigned mismatch   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   454   
Warning   48   warning C4267: 'argument' : conversion from 'size_t' to 'uint32', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   488   
Warning   49   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   509   
Warning   50   warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   509   
Warning   51   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   534   
Warning   52   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   535   
Warning   53   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   539   
Warning   54   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   540   
Warning   55   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   544   
Warning   56   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   545   
Warning   57   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   549   
Warning   58   warning C4244: '=' : conversion from 'double' to 'float', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\gui.cpp   550   
Warning   59   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   60   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   61   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   62   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   63   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   64   warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guielement.cpp   166   
Warning   65   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   66   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   67   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   68   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   69   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   70   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   71   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   72   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   73   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   74   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   75   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   120   
Warning   76   warning C4244: '=' : conversion from 'const float' to 'int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\screenposition.h   121   
Warning   77   warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   85   
Warning   78   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   145   
Warning   79   warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data   c:\users\nicolas\desktop\mgottschlag-horde3dgui-4a4e495\extensions\gui\source\guiskinresource.h   154   
Warning   80   warning C4244: 'argument' : conversion from 'double' to 'float', possible loss of data   c:\Users\Nicolas\Desktop\mgottschlag-Horde3DGUI-4a4e495\Extensions\GUI\Sample\app.cpp   355   
Warning   81   warning C4244: 'argument' : conversion from 'double' to 'float', possible loss of data   c:\Users\Nicolas\Desktop\mgottschlag-Horde3DGUI-4a4e495\Extensions\GUI\Sample\app.cpp   355   



Thanks for your feedback, that's always welcome.

phoenix64 wrote:
- Creating unique names for dynamically created resources (also added to the outside API for manually creating resources on the user side) like "internal_resource_124521".

We have something like that for resource cloning: if you specify an empty name string, a unique name is generated. Something similar could make sense for addResource.

phoenix64 wrote:
- Texture mipmaps - can they somehow automatically produced? I didn't see any solution when I created the font texture, while I would expect it to automatically generate smaller mipmaps (that OpenGL variable is set somewhere for mipmap textures), I had to manually create all mipmaps for mipmapping to work properly. Probably my mistake, please someone help me there.

At the moment we are either loading them directly from dds or have GL generate them (GL_GENERATE_MIPMAP). But it makes definitely sense to have our own mip generation function in the future.

phoenix64 wrote:
- Extensions currently are not what they should be - they usually have to be compiled into the engine as horde3ds internals are usually hidden to the outer world. This is a good thing, but it greatly limits external plugins. I currently don't see any real workaround, to me exporting the internals and adding a version check to be used by plugins is the only thing that could work.

We had this discussion before and my standpoint is that extensions are not meant as plugins (more like OGL or phpbb extensions, not like Photoshop plugins) and for a development library I don't see any advantage from dynamically linking add-ins. Extensions as DLLs would be slower (less global optimizations and function inlining), have memory allocation issues (freeing memory allocated in another DLL does not work) and would be unsafer (users can exchange extensions for cheating). They would only be marginally easier to use but cause major headaches under Windows with how to expose all classes (you can't pass most STL containers across DLLs). And they would compromise the encapsulation and abstraction that we have now (the strict separation between internal and external interface). Did I miss anything? ;)

phoenix64 wrote:
Next on my TODO list are now finally edit boxes, modal widgets, list boxes, GUI layout resources (like scene graph resources).

Looking forward to that. Keep up the great work!


Top
 Profile  
Reply with quote  
PostPosted: 05.01.2010, 23:39 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
I hate git, I didn't figure it out how to get the newest version, create a patch etc. using TortoiseGit... nevertheless, I have another patch, that contains some of the changes that seem to be not integrated yet, although some of them were in the last patch already..


Attachments:
File comment: Reduced to 36 warnings
warnings.patch [2.28 KiB]
Downloaded 2012 times
Top
 Profile  
Reply with quote  
PostPosted: 06.01.2010, 14:20 
Offline

Joined: 15.06.2008, 11:21
Posts: 166
Location: Germany
Yeah, git sucks under windows. I'll probably change to mercurial in the near future. IAnd most of that changes already are incorporated in http://github.com/mgottschlag/Horde3DGU ... e11995ba89 .

If you don't want plugins, then the current repository situtation sucks because extensions have to be integrated into the main repository. This imho would be totally ok if one had some kind of decentral development system (e.g. mercurial or git repos). What one wants is as many extensions as possible, especially extensions from third party developers like me - and the last thing someone wants is to merge 5 or 6 subversion repositories. And imho the community repo is no real solution either because development of horde3d is done somewhere else and usually the plugins are outdated and break with every merge into the community repository. The easier way would be to download the main repository and then just fetch from a extension repository which would be regularly rebased onto the main repository - and the extension repository then would be maintained by someone to who people can send pull requests from their own extension repositories.

Quote:
At the moment we are either loading them directly from dds or have GL generate them (GL_GENERATE_MIPMAP).

How is GL_GENERATE_MIPMAP supposed to work? Seems like it does not at all when later manipulating the texture. Or did I miss something there?

EDIT: See http://tortoisehg.bitbucket.org/. Great windows client. I'm just creating a repo the way I said now to test whether this really would help.

EDIT2:
http://bitbucket.org/mgottschlag/horde3d/ - Horde3D repo without extensions. I'll keep this updated, but would like to see something like this repo to be used officially.
http://bitbucket.org/mgottschlag/horde3dext/ - A fork of the former repo, but with extensions. Includes the GUI extension, but nothing from the community repo.

The good thing about such a layout is that merging between the repos is much easier than it is with svn and people who want to contribute just create their fork and send pull requests back for new extensions/patches.


Top
 Profile  
Reply with quote  
PostPosted: 07.01.2010, 07:05 
Offline

Joined: 09.09.2009, 18:58
Posts: 107
Something you may want to consider is allowing the use of shaders on the GUI elements, if that is not already implemented. Other than suggesting that, I am too much of an OpenGL noob to be of much use here. :roll:

Great work so far though! I am certain that I will find use of an extension like this in my student project.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 27 posts ]  Go to page 1, 2  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group