Hol como estan ando buscando un ejemplo sencillo para el desarrollo de una scene graph c++, me e leeido varios articulos del tema y sigo sin entenderle, alguno de ustedes me podrian ayudar :D
Aqui http://www.gamedev.net/reference/programming/features/scenegraph/ (http://www.gamedev.net/reference/programming/features/scenegraph/) tienes un pequeño articulo sore el tema bien explicado y con algo de codigo.
Gracias por el link, pero no entendi la parte del render como renderiso todo eso no lo comprendi 8o
Con http://en.wikipedia.org/wiki/Opengl (http://en.wikipedia.org/wiki/Opengl), http://en.wikipedia.org/wiki/Directx (http://en.wikipedia.org/wiki/Directx) o http://en.wikipedia.org/wiki/Microsoft_XNA (http://en.wikipedia.org/wiki/Microsoft_XNA) por ejemplo.
:D no, me referia a como renderisar el nodo principal, si conosco las API graficas :o
Pues, por ejemplo, en XNA podria ser:
La clase principal, Game:
public class MyGame : Microsoft.Xna.Framework.Game
{
// ...
protected override void Draw(GameTime gameTime)
{
foreach (RenderContext renderContext in renderContexts)
renderContext.Draw(gameTime);
base.Draw(gameTime);
}
// ...
}
El RenderContext:
public class RenderContext : DrawableGameComponent
{
// ...
public override void Draw(GameTime gameTime)
{
ClearBackBuffer();
// 3D Render
foreach (Camera camera in cameras)
{
ApplyCamera(camera);
BaseNode.root.Draw(gameTime); // Este es el nodo principal del scenegraph
}
// 2D Render
{
}
// Render de texto
base.Draw(gameTime);
}
// ...
}
Y por fin el render de nodo basico del scene graph
public class BaseNode : IDisposable
{
// ...
public virtual void Draw(GameTime gameTime)
{
if (visible)
{
//if culling
OnDraw(gameTime);
}
if (listChild != null)
{
for (int i = 0; i < listChild.Count; ++i)
listChild[i].Draw(gameTime);
}
}
public virtual void OnDraw(GameTime gameTime) { } // Aqui dibujan los distintos tipos de nodos
public static BaseNode root = new BaseNode(); // Este es el nodo raiz del scenegraph
// ...
}