Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7046609
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T02:40:16+00:00 2026-05-28T02:40:16+00:00

I am getting into GUI programming and did some research. Now not everything is

  • 0

I am getting into GUI programming and did some research. Now not everything is clear to me.
If I would use GTK+ as toolkit, how does it communicate with the graphics card?

On a Linux system I suppose it would be GTK –> X Server –(OpenGL)–> graphics card.
Is this right?

I read that some GUIs directly draw OpenGL (e.g. Blender3D), so how do other apps draw their GUIs?

If the only APIs (that i know of) for graphics cards is Direct3D and OpenGL, what is the distinction between software rendering and hardware acceleration?

Can software that does “software rendering” directly write to the framebuffer of the graphics card, so that OpenGL is untouched?

PS: sorry for the many questions, but i don’t really get it how that all works, thanks for every answer 🙂

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T02:40:17+00:00Added an answer on May 28, 2026 at 2:40 am

    On a Linux system I suppose it would be GTK –> X Server –(OpenGL)–> graphics card. Is this right?

    No. GTK+ on Linux goes

                                                  /-[ if direct context ]---\
                         /--> OpenGL >-+---------/                           \
                        /              \-> GLX -+--------------\              \
                       /                         \              \              \
    GTK+ -+-> cairo >-+---> XRender >--------+----+-> Xlib/xcb >-+-> X server >-+-> Kernel Module >-> GPU
           \           \–-> pixmap buffer >–/
            \                              /
             \―---------------------------/
    

    I read that some GUIs directly draw OpenGL (e.g. Blender3D), so how do other apps draw their GUIs?

    It’s just “Blender” (no trailing 3D). Blender’s GUI toolkit uses OpenGL as its only backend, yes. But the GUI is not directly drawn using OpenGL, that would be just to cumbersome to work with (draw each and every button using OpenGL calls. Blender has its very own toolkit. GTK+ is another toolkit but not tied to Blender (in fact, one of my pet projects is extracting Blender’s GUI toolkit, so that it can be used in independent projects).

    Toolkits like GTK+ and Qt are designed for maximum portability. Blender has the luxury of knowing, that there will be OpenGL available. Apps developed for GTK+ or Qt may be able to run on non 3D capable systems, so the design of GTK+ and Qt allow to run on a number of backends. GTK+ now in version 3 uses the Cairo graphics engine as graphics backend. Cairo again has its own backends, namely a software rasterizer drawing into pixmaps (pixel images), or proxying drawing commands to an underlying graphics architecture. In the case of Cairo on Linux this may be either OpenGL or X11 (core and XRender protocol extensions).

    If the only APIs (that i know of) for graphics cards is Direct3D and OpenGL, what is the distinction between software rendering and hardware acceleration?

    Neither OpenGL nor Direct3D talk to the graphics card. They talk to the graphics card’s drivers. So the option you’d have would be, talking to the drivers youself, bypassing OpenGL and Direct3D. But why would you do this? It’s tedious.

    On Windows in addition you have the GDI and/or the WPF (Windows Presentation Foundation) for drawing stuff, and Direct2D.

    On Linux you get the X11 core and XRender extension protocol for drawing nice pictures.

    Another API in the rise is OpenVG, which aims to standardize all those 2D drawing APIs. And at least in Linux OpenGL and OpenVG have been selected to become the only available abstract drawing APIs in the long term, with some windowing system for managing the framebuffer and user input. There’s Wayland in development (which design I completely dislike) and X11, which I think has the better design (it’s a network oriented system, that allows for distributed execution, something I consider very important in the future), but is in need of a complete overhaul into some “X12” – cleaning out the legacy cruft, make it operate in a contact color space, make connections transitionable (so that you can migrate clients between X server, which would allow for a much more elegant way of locking X sessions, by moving all the connections into some shadow X server, instead of trying to block access using a locking screen saver).

    Can software that does “software rendering” directly write to the framebuffer of the graphics card, so that OpenGL is untouched?

    Not on a modern operating system. However the OS may give you an abstracted access to the graphics card through some framebuffer API (/dev/fb0 on Linux). However the framebuffer is unmanaged, so if there’s a X server or Wayland running, either of those are in task of managing the FB, and it’s none of your business then.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Just getting into SQL stored queries right now... anyway, here's my database schema (simplified
I'm just getting into creating some WCF services, but I have a requirement to
I just started getting into BizTalk at work and would love to keep using
I have just been getting into low level programming (reading/writing to memory that sort
I'm just getting into unit testing, and have written some short tests to check
I am getting into making my own embedded system and I wanted to use
Thinking about getting into .net technology project management I've had plenty of experience with
I'm getting into ASP.NET (C# - I know it doesn't matter for this particular
I'm getting into more of a TDD workflow, and have a mix of MVC
I am just getting into ibatis with SqlMap for the first time and I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.