PDA

View Full Version : PointSprites are suported using VBO



speed
11-24-2006, 01:49 AM
I have some troubles with the framerate when I use PointSprites.

I compute a procedural 2D texture that represents a set of vertices. Then I use it as VBO using PBO. To draw them I use DrawArrays.

When I draw 170000 points I have about 180fps, but if I activate pointsprite extension I have 0.6fps.

I don't think that the number of points reduce the fps, I think the problem is that something is not suported and the driver to the work.

What dou you think?

Relic
11-24-2006, 02:11 AM
What did you set as GL_POINT_SPRITE_COORD_ORIGIN?
OpenGL's default is GL_UPPER_LEFT and I think NVIDIA accelerated only GL_LOWER_LEFT.

Jackis
11-24-2006, 06:02 AM
Yes, Relic is right somehow.
The exact info about that is:

OpenGL 2.0 introduces a new point sprite mode called
GL_POINT_SPRITE_COORD_ORIGIN that can be set to GL_UPPER_LEFT (the default) or
GL_LOWER_LEFT. The earlier ARB_point_sprite and NV_point_sprite extensions lack
this mode.
When rendering to windows, leave the GL_POINT_SPRITE_COORD_ORIGIN state set to its
default GL_UPPER_LEFT setting. Using GL_LOWER_LEFT with windowed rendering will
force points to be transformed on the CPU.
When rendering to pixel buffers (commonly called pbuffers) or frame buffer objects
(commonly called FBOs), change the GL_POINT_SPRITE_COORD_ORIGIN state set to
GL_LOWER_LEFT setting for fully hardware accelerated rendering. Using GL_UPPER_LEFT
with pbuffer and FBO rendering will force points to be transformed on the CPU.
NVIDIA supports (on all its GPUs) the NV_point_sprite extension that provides one
additional point sprite control beyond what OpenGL 2.0 provides. This extension
provides an additional GL_POINT_SPRITE_R_MODE_NV that controls how the R texture
coordinate is set for points. You have the choice to zero R (GL_ZERO, the default), use the
vertex’s S coordinate for R prior to S being overridden for the point sprite mode (GL_S),
or the vertex’s R coordinate (GL_R).

speed
11-27-2006, 12:06 AM
Thanks!

It was exactly the problem. I was using FBO without put the correct value.

I can't understand exactly the meaning of GL_S and GL_R. Anybody knows?