[Bf-committers] sdl/glfw based GUI toolkit for Blender
Felipe Ferreira da Silva
felipefsdev at gmail.com
Tue Dec 17 15:40:59 CET 2013
Despite SDL2 have many resourcese, it seems to me that the library is very
redundant. Suport for OpenGL and DirectX, the new structure SDL_Texture and
the old SDL_Surface. However, both structures don't offer good drawing
resources. SDL_texture was acctually the only big reason I was using SDL2
(and I think this is the reason of many), but with a little effort, I was
able to obtain better results just using OpenGL framebuffers, but any later
developer will not ave to worry about learn how to use framebuffers to
create widgets, because this is part of the library core.
SDL_ttf is an advantage for SDL, but it was still a SLD 1.2 library, using
resources from the SDL 1.2. So, to use true-type fonts, there was still
needed to use SDL 1.2 stuff (structures and functions).
About input system, seems that GLFW has the same things as SDL2, but I
found out (at the developers' page) that GLFW will have tablet support, and
there is no plan of tablet support for SDL2.
In general, the GUI library seems cleanner using GLFW, the code is simpler.
For true-type fonts rendering, I'm making tests right now, I'm using FTGL,
but later I will test with a simple implementation that can be found at
Well, every time I make a project, I start by making an entire layout about
how the pieces will fit together (occasionally, changes will happen). I
spend more time planning than coding.
In that proposal page, I would care more about Design's Layout &
First, because I would need to write out the Code section, but I don't have
much time this week (exams at university), and second, because the
Blender's users write their concepts based on their own conventions over
the current layout.
Some conventions questions would be:
* Use the so proposed fixed tabs or toolbar?
* Still use the same frame splitting concept(
* New Input/output conventions?
To write the conventions and rules of code, for later widget developers, I
still need to implement a small part of the code. If you have ever used
Delphi or Lazarus, you will get the idea of how it will be. The difference
is that to someone connect an signal, instead of do the following:
WidgetButton->FOnClick = &my_click_function;
it will do like Gtk:
Widget_ConnectSignal(WidgetButton, "on-click", &my_click_function);
A feature that I would not go for is multiple windows. I still don't
support multiple windows in my library, and I don't plan to support it for
now, that is why a single window can have multiple client widgets
(top-level widgets) instead:
On the layout of a development tool like Blender, it is important to care
more about the disposal redundancy. Some stuff could be together, some
If you are curious about the code, you can seeit at
https://github.com/FelipeFS/TableGUI/blob/master/GUI.c. The core functions
are at the end of the file. The more in the end the function is written,
the more innermost is the function.
2013/12/17 <hewi at jupama.org>
> @Felipe Ferreira,
> Hey Felipe Ferreira,
> Is there a specific reason why you have switched to glfw besides you like
> it? I have many messages stating sdl2 would be a better choice and I have
> actually been in contact with glfw support team and also they mention
> that, for a project the size of blender, you would be better of using the
> sdl2 libs.
> Also, did you have a planning of your GUI project, do you have an overall
> code layout or structure scheme? Are you using some kind of software
> development scheme or did you just "dive in?". For example: what kind of
> application loop are you thinking off/implementing?
> Eventually I am just concerned you are putting a lot of effort energy and
> time in writing code which eventually might have to be re-factored yet
> again. That would be very sad.
> Have a look at :
> and tell me what you're input would be there
> Bf-committers mailing list
> Bf-committers at blender.org
- Felipe Ferreira da Silva
More information about the Bf-committers