Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





scene graph

Iniciado por jcjuegos, 24 de Julio de 2009, 11:52:45 PM

« anterior - próximo »

jcjuegos

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

martinbr

Aqui http://www.gamedev.net/reference/programming/features/scenegraph/ tienes un pequeño articulo sore el tema bien explicado y con algo de codigo.
Martin B.R. // martin [at] martinbr [dot] com // www.martinbr.com // LinkedIn

jcjuegos

Gracias por el link, pero no entendi la parte del render como renderiso todo eso no lo comprendi 8o

martinbr

Martin B.R. // martin [at] martinbr [dot] com // www.martinbr.com // LinkedIn

jcjuegos

 :D no, me referia a como renderisar el nodo principal,  si conosco las API graficas  :o

martinbr

#5
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
   
    // ...
  }
Martin B.R. // martin [at] martinbr [dot] com // www.martinbr.com // LinkedIn






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.