Skip to content
Freeman Zhang edited this page Apr 29, 2015 · 8 revisions

Welcome to the BlendInt wiki!

Introduction

BlendInt is a lightweight C++ GUI toolkit for building cross-platform application with Blender-like style, originally written for my own use.

Please be noted that this project is under heavy development. Support cannot be guaranteed and it may not function as you expect. Besides, the Wiki page is under construction and the API may also change at any time.

BlendInt currently lives on GitHub.

License

BlendInt is free software and licensed under under the GNU Library General Public License (LGPL) v3, which can be found in the LICENSE file. The license is also included at the top of each source file.

BlendInt comes bundled with a number of dependencies, each with its own license:

  • BlendInt use libCppEvent for sending/receiving events between objects, which is released under MIT License.
  • RapidXml - The author of RapidXml is Marcin Kalicinski, use of this software is granted under one of the following two licenses: boost software license or MIT license.

The Motivation

I love open-source software, all of them are cross-platform and I am using many of them on different platforms (Linux and OS X) every day. (Thanks to every OSS developer!!!)

Most cross-platform software are based on Gtk+ or Qt for GUI. But sometimes I'm not satisfied: for example, GIMP works very well in Linux, even in a low-end notebook, but it does not provide the same look and feel in my Mac (a high-end iMac 2013-late model).

There is one impressed me very much: Blender, a free and open source 3D animation suite. It runs equally well on Linux, Windows and Mac. Its interface uses OpenGL to provide a consistent experience. So I decided to develop a simple C++ GUI toolkit in the same way.

I didn't just copy the interface code from Blender. Actually it's impossible, these code are embedded in Blender to support Blender's DNA data structure, and written in C. But I use the same icon and color scheme currently. :)

There're advantages and disadvantages in this toolkit:

  • Advantages
    • It provides another way to develop graphical application, you can use the built-in GLFW support to create window in different OS, or integrate in other toolkit which can create an OpenGL context.
    • It provides same look and feel in different OS, because all UI elements are drawing with OpenGL API.
    • Better performance comes with better graphic card.
    • Share buffer with OpenCL.
      • TBD
  • Disadvantage
    • Depends on H/W, this toolkit need OpenGL 3.3+ API support, it cannot run or has bad performance on low-end GPU.
    • Slow launching. You have to make sure the OpenGL context is created first, and it takes some time to load resources (e.g. shaders).
    • No input method support. (currently, it should be fixed but need interaction with the native window system)
    • When programming, you have to consider when should send a refresh request to the OpenGL window manully. (See the programming guide page).
    • TBD

If you like this idea, please help me on the code, doc, or just open an issue on https://github.com/zhanggyb/BlendInt/issues.

Table of Contents

  1. Home
  2. Roadmap
  3. Known Issues
  4. Build from Source
  5. Using BlendInt
    • H/W Requirements
    • Fontconfig and Fonts
    • Compile with BlendInt
      • "Hello World" example
      • Eclipse
      • Xcode
    • Tips
      • Use BlendInt in real time app
      • Use BlendInt in non-real time app
  6. Gallery
  7. Programming Guide
    • Basic Class Diagrams
    • Layout
    • Draw
      • Draw with OpenGL APIs
      • Draw with Predefined Shaders
    • Use event framework
    • Process HID events from window system
    • Memory Management
    • MVC for ListView/TreeView
    • Off-screen Render with FBO
    • Write your custom Widget
    • Write your custom Container
    • Themes
  8. API Reference
  9. Development
  10. FAQ
Clone this wiki locally