Off-Topic Discussion > Programming

2D vs 3D GUI desktop

(1/4) > >>

When you play a game the computer essentially uses a 3D mode to run the game like DirectX or OpenGL.  When you go back to the desktop it goes back to 2D mode.  There are other devices out there that use similar techniques like Android, etc.  I guess the point of switching to a 2D mode is to save power, unless there's something more?  I find it interesting that game GUIs are much smoother and respond faster than say the start menu of Windows XP...sometimes there are occasional delays.  I guess what I'm trying to ask is would a 3D GUI interface be better than our traditional 2D interfaces in terms of responsiveness?  How bout from a programmer's perspective?

My knowledge only extends to C++ object-oriented programming, which I completed last semester.  So sorry if this is a weird question.  I'm thinking about whether I should learn about 3D programming if I want to build an interface, like a frontend for a program, or if I don't have to go that far and just learn 2D stuff.  Let's say for example I wanted to develop a smooth but graphical media player interface for Windows or Android.  Currently leaning towards Android though.

The E:
All Windows interfaces after Vista are running on the GPU. Linux has been using GPU-accelerated compositing for about the same time :P

The problem with "3D interfaces" is that they tend to get very hollywood-esc, with effects piled upon effects; these waste user time while doing something flashy. As an experiment, you can use the developer options on an Android phone to slow down the animations, but you will soon see that while it may look smoother, it's a net decrease in usability.

But, to repeat, this is not something that an application programmer should have to take into account. All modern UI frameworks (GDI/WPF on Windows, whatever the equivalent frameworks are called on Linux/MacOS) are GPU accelerated on current platforms (XP, of course, not being current).

the os usually handles the rendering of gui elements for you and you can focus on the main purpose of the app. you usually dont even need to touch a graphics api in that case, and can just use your gui library directly where the underlying workings are all taken care of for you. most gui interfaces also offer a means to implement rendering viewports that can operate raw graphics library commands. heres an example of a program i wrote (its actually a lua script) running a gui library (iup) which i use to graph out sensor data from an arduino.

mostly i just deal with placing controls, and layout, so i dont need to get down and dirty with graphics api calls. however the graphing window is an opengl viewport and actually does use the opengl calls to draw the graph (there is also a 3d vector scope mode not shown), and those are used in cases where you need more rendering capability than your gui interface can do. the os pretty much takes care of everything for you, and if its rendering through an accelerated api, so much the better, but from the application side of things this stuff is mostly hidden from you.

So I guess as I'm writing an app the compiler will link up to whatever 3D components I need and I don't have to worry about complicated things like making the whole interface 3D, right?

Phantom Hoover:
your confusion on this matter runs deeper than can really be addressed on a forum post; but: yes, just write standard 2D interfaces and they'll be perfectly responsive.


[0] Message Index

[#] Next page

Go to full version