June 2014 updates to Magnum

The Mag­num C++11 and OpenGL/OpenGL ES/We­bGL graph­ics en­gine gained ex­per­i­men­tal An­droid sup­port, win­dow­less ap­pli­ca­tions on OS X and Win­dows, us­es SDL2 as the de­fault tool­kit, adds new tex­ture and mesh fea­tures, im­proves build sys­tem and got huge doc­u­men­ta­tion re­view.

The ver­sion 2014.06 is avail­able un­der the v2014.06 tag in Cor­rade, Mag­num, Mag­num Plug­ins and Mag­num In­te­gra­tion GitHub repos­i­to­ries. This ar­ti­cle will de­scribe the most im­por­tant changes, for de­tailed list fol­low the changel­og links at the end of this an­nounce­ment.

For com­pat­i­bil­i­ty branch there is the snapshot-2014-06-compatibility tag in Cor­rade, Mag­num, Mag­num Plug­ins and Mag­num Ex­am­ples repos­i­to­ries.

Ex­per­i­men­tal An­droid sup­port

This snap­shot con­tains ex­per­i­men­tal sup­port for An­droid, see Cor­rade and Mag­num build­ing doc­u­men­ta­tion. Ini­tial plat­form sup­port is in Plat­form::An­droidAp­pli­ca­tion.

Android Application

Win­dow­less ap­pli­ca­tions on Mac OS X and Win­dows

Win­dow­less ap­pli­ca­tions are now sup­port­ed on Win­dows and, thanks to joint ef­fort by @ama­ranth and @ArEn­Sc, al­so on OS X. All com­mand-line util­i­ties such as mag­num-in­fo, Dis­tance Field con­ver­sion util­i­ty and Font con­ver­sion util­i­ty are thus now avail­able on all three ma­jor plat­forms.

Drop­ping GCC 4.6 sup­port from mas­ter

Since GCC 4.7 is avail­able even in LTS Ubun­tu, it was time to drop sup­port for 4.6 from master and pro­vid­ing it on­ly in compatibility branch. Mas­ter branch now makes use of ad­di­ton­al C++11 fea­tures, such as tem­plate alias­es, del­e­gat­ing con­struc­tors, us­er-de­fined lit­er­als etc., re­sult­ing in more main­tain­able code.

Us­ing SDL2 as the de­fault win­dow­ing tool­kit

Since LTS Ubun­tu now al­so has SDL2 in the repos­i­to­ries, it is now used in the doc­u­men­ta­tion, tu­to­ri­als and ex­am­ples as the de­fault win­dow­ing tool­kit. The GLUT tool­kit, which was used be­fore, is still avail­able in the li­brary, but its us­age is not rec­om­mend­ed and it prob­a­bly won’t re­ceive new fea­tures any­more.

In­stalling de­bug and re­lease li­braries and plug­ins in­to sep­a­rate lo­ca­tions

As ex­plained in mosra/mag­num#45, on some plat­forms it is not pos­si­ble to mix de­bug and re­lease li­braries, as it leads to link­er er­rors. Ad­di­tion­al­ly it al­so wasn’t pos­si­ble to in­stall both de­bug and re­lease li­braries in­to the same lo­ca­tion, caus­ing var­i­ous in­con­ve­niences. Since this re­lease, de­bug li­braries are in­stalled with -d suf­fix and de­bug plug­ins are in­stalled in­to sep­a­rate magnum-d/ di­rec­to­ry. From end-us­er point of view not much has changed, CMake will au­to­mat­i­cal­ly se­lect prop­er li­braries based on build type and al­so tries the best to se­lect ap­pro­pri­ate plug­in di­rec­to­ry. See doc­u­men­ta­tion about plug­ins for more in­for­ma­tion about plug­in di­rec­to­ries on mul­ti-con­fig­u­ra­tion build sys­tems.

Com­plete changel­og

You can find a de­tailed list of changes in ver­sion 2014.06 in the doc­u­men­ta­tion: