gnu3dkit-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnu3dkit-discuss] G3DKit.info - renderer questions


From: Philippe C . D . Robert
Subject: Re: [Gnu3dkit-discuss] G3DKit.info - renderer questions
Date: Wed, 30 Oct 2002 23:23:54 +0100

On Wednesday, October 30, 2002, at 10:20  Uhr, Brent Gulanowski wrote:
When traversing/rendering a scene graph, an render engine is passed. This engine uses a render action which processes state handling, attribute
  evaluation etc. Concrete engines and actions are not provided by the
  RenderKit itself but by separate bundles.

This is a little unclear to me. I can't tell what's doing what. When the renderer is loaded, I'm guessing some object from RK holds a reference to it: maybe some kind of overall manager for RK (main point of contact for the application?). For DRAW/CULL/UPDATE/ISECT actions, the renderer is passed to the graph itself, or to some graph manager? When you say "engine uses a render action", do you mean that a render action method exposed by the renderer protocol, is implemented by the renderer, and is called by RK? That sounds like what you mean. But I might have it completely backwards...

You might want to use 2 camera objects rendering the same scene using 2 different renderers...

So if - while traversing - a state change has to be made the traversing tells the active renderer to do so, which in turn will execute the appropriate task depending on the currently active rendering technique.

Each renderer maps actions to tasks, if possible. Otherwise a default
  fallback task is performed (on the respective category).

  Tasks interface with a low level rendering API such as OpenGL while
  renderers should be implemented in a generic way.

This approach I like, except I would have used the words in exactly the opposite way. An action is specific, while a task is general (sometimes even abstract) -- different actions can be used to accomplish the same task. E.g.: drawing is a task, while submitting triangles to OpenGL is an action. The same task can be accomplished by a very different action, such as a person sketching on a piece of paper.

My terminology here is:

o [action] a highlevel "job" to be performed on the scene graph, ie. culling data for the active frustum. This is thus generic.

o [task] a specific low-level "job" performed by the render engine, ie. switching a state (simple) or drawing arbitrary geometry (complex). This is thus specific.

Do you think this is a bad choice? I can see both possibilities, as long as it is used consistently...:-)

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip





reply via email to

[Prev in Thread] Current Thread [Next in Thread]