Hi & welcome,
regarding your questions (actually, only #3 and #4) - the patch you have found is experimental, it will basically look up a view and dynamically add a slave camera to the renderer that renders the whole thing to a Canvas, a Canvas is a fancy word for a RTT/FBO context in FlightGear that can be updated by using a property-based API built on top of the property tree in the form of events/signals that are represented via listeners.
Which is to say each Canvas has a handful of well-defined property names (and types) that it is watching to handle "events" - think stuff like changing the size/view port etc. And then there is a single top-level root group, which serves as the top-level element to keep other Canvas elements.
A Canvas element is nothing more than a rendering primitive that the Canvas system can handle - e.g. stuff like a raster image can be added to a Canvas group, a text string/font, and 2D drawing primitives in the form of OpenVG instrutions mapped to ShivaVG. And that's basically about it (with a few exceptions that handle use-case specific stuff like 2D mapping/charts).
Apart from that, the main thing to keep in mind is that a Canvas is really just a FBO - i.e. an invisible RTT context - to become actually visible, you need to add a so called "placement" - this tells the rendering engine to look up a certain canvas and add it to the scene/cockpit or the GUI (dialogs/windows).
So far, all of this is handled using native code that watches the global /canvas tree in the property tree - there is a canvas manager that handles events and passes them onto the corresponding canvas instance and its child elements.
Realistically, all Canvas textures are however instantiated/updated using scripting space hooks that end up writing to the corresponding properties in the global property tree, this makes it much easier to manipulate a canvas/element, because you don't need to do any low-level getprop/setprop stuff, but can directly use an element specific API.
Like Stuart said, by default (without any patches applied), the Canvas pointers you have found are unlikely to be relevant "as is".
What is most relevant are the pointers to effects and shaders. An effect in FlightGear is basically a set of XML files using the PropertyList format that is processed by the FlightGear/SimGear effects system to map effects to shaders using an inheritance mechanism, conditions and of course properties.
Someone with your background, i.e. familiarity with C++, OSG and GLSL would undoubtedly benefit from the pointers that Stuart posted, in addition I would strongly suggest to get in touch with Icecode_GL, but also read up on Zan's newcameras effort - which was basically pre-dating Canvas/Rembrandt (deferred rendering), but Zan created an XML-configurable rendering pipeline by extending Tim's original CameraGroup/effects groundwork.
And that's probably the other most relevant pointer in the context of modifying the hard-coded rendering pipeline: CameraGroup and $FG_SRC/Viewer - to make heads and tails of it, you will want to look up README.multiscreen and look at $FG_SRC/Viewer
And maybe read up on how Rembrandt (deferred renderer) relates to all of this (or not).
https://sourceforge.net/p/flightgear/fg ... ultiscreenhttps://sourceforge.net/p/flightgear/fl ... aGroup.cxxhttps://sourceforge.net/p/flightgear/fl ... rc/Viewer/http://wiki.flightgear.org/Howto:CameraGroup_talkshttps://sourceforge.net/p/flightgear/ma ... ameraGroupThe Canvas system however is currently constrained to being 2D specific, i.e. to be useful for any of the "3d scene" stuff you're interested in, you'd need to read up on adding new/custom elements - e.g. those useful for 3d stuff, and effects/shaders specifically.
As Icecode GL mentioned, this is something that he's been tinkering with lately. Like he also mentioned, based on Zan's groundwork (newcameras), we are looking at exposing a similar degree of flexibility via the Canvas system by introducing new elements and/or additional "modes".
For starters, this will probably only involve a new view-manager based Canvas view to render a slave scenery view to a Canvas texture. The next incarnation may include effects/shader support to customize such a slave view.
Besides, it would also be possible to render a totally independent scene/osg::Node - which is something that we once prototyped to load 3D models from disk and rotate/transform those using an osg::PositionAttitudeTransformMatrix
http://wiki.flightgear.org/Howto:Extend ... _3D_modelsThe wiki also contains experimental patches demonstrating how effects/shaders could be enabled:
http://wiki.flightgear.org/Canvas_Devel ... 2F_Shaders