Logo

¡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.
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.