Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 6 of 6

Thread: Best way to draw infinite size grid?

  1. #1
    Junior Member Newbie
    Join Date
    Aug 2005
    Posts
    22

    Best way to draw infinite size grid?

    I have a 2D space setup for a plot. I want the user to be able to 'pan' through the plot by holding down a mouse button and dragging. So the plot may exist over some insane range like 1 to 1 million in both directions, but the user is only seeing a 500x500 chunk at a time, and by dragging the mouse they're changing the chunk they're looking at (think of staring through a cylinder on top of a map laid out on a desk). There should always appear to be a grid in the background as the user pans.

    Information known at runtime:
    -(x,y) coordinate primary vertical line and horizontal line should go through (origin)
    -amount of space between lines

    Not known at runtime:
    -How far out into space the user will pan.

    The whole time, the user should have the illusion of panning over one contiguous grid. Since I won't know how far out they'll go at runtime, and it could be big, just drawing lots of lines over the total available space isn't feasible (the range they could pan over might be x=(0, 65535) y=(0, 65535) with spacing expected to be 10 in both directions, meaning 2*65535.5 lines to draw @_@

    So I know I should only be drawing a small number of lines viewable where the user is currently panning over. I'm not sure how to do this avoiding immediate mode. Ideas?

  2. #2
    Advanced Member Frequent Contributor
    Join Date
    Feb 2006
    Location
    Sweden
    Posts
    748

    Re: Best way to draw infinite size grid?

    it's hard to avoid immediate mode, but you could set up a VBO with a grid of lines in it, and then move it around set distances using glTranslate.

    another way is to use a texture with the grid on it and just have it repeat infinitly

  3. #3
    Junior Member Regular Contributor
    Join Date
    Feb 2003
    Location
    Waltham, MA
    Posts
    126

    Re: Best way to draw infinite size grid?

    having a texture repeat that much would require more precision than is currently available. That said, you'll probably get very noticable texture swimming. That said, just moving a slightly oversized grid by set amounts is probably your best option.

    Kevin B

  4. #4
    Senior Member OpenGL Pro k_szczech's Avatar
    Join Date
    Feb 2006
    Location
    Poland
    Posts
    1,119

    Re: Best way to draw infinite size grid?

    When you have a lot of geometry, but you view only portion of it then using algorithms such as BSP is what you need.
    You have a rectangular (or quad) space with geometry - if there is too much geometry then divide this space into 4 euqal parts. If some of them have too much geometry, then divide them again, and so on.
    This way you build a tree of quads - each one contains up to 4 smaller quads and quads at the lower level contain geometry information.

  5. #5
    Senior Member OpenGL Guru knackered's Avatar
    Join Date
    Aug 2001
    Location
    UK
    Posts
    3,032

    Re: Best way to draw infinite size grid?

    that would be a quad tree, not a binary space partition, which deals with half spaces.
    the grid should be a single quad stretching slighting beyond the limits of your frustum, locked to the viewers position on the ground plane (x,z). Then use the texture matrix to scroll a wrapping texture based on the same x,z.
    Knackered

  6. #6
    Junior Member Regular Contributor
    Join Date
    Feb 2003
    Location
    Waltham, MA
    Posts
    126

    Re: Best way to draw infinite size grid?

    If you're displaying just a grid, don't you think it would be a bit much to build the entire thing (which btw would have no variation) and then try to partition that? Not only that, but what about the precision loss? What about the memory required? What about the tree traversal? Just using integers to store a fixed point camera position and simply moving the grid as the camera moves would easily do the trick.

    Kevin B

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •