PDA

View Full Version : gl_PointSize - point size based on screen height?



Jeffg
02-23-2011, 08:18 AM
Most of my images are point sprites and I've written a shader to scale the point size based on distance. However, I now need to rotate a quad around my point - all good. Except, when the resolution changes the difference between the size of the point sprite and the size of the quad changes (I've tied it to the height of the screen). My quad becomes too small to rotate around the sprite. So I'm thinking my scaling of my point sprite must be based somehow on the resolution of the screen, but I'm not quite sure how to fix it since I'm a complete noob. Help :-)

Here is part of my vertex shader...

uniform float pointSize;
vec4 modv = vec4( gl_ModelViewMatrix * gl_Vertex );
gl_PointSize = 200.0 * pointSize/ -modv.z;

Jeffg
02-23-2011, 08:57 AM
As a temporary work around, I've done this.. but I don't know the rhyme or reason for it. I'm sure there is something simple I must be missing.

Instead of a static 200.0 * pointSize/ -modv.z;
I now divide the screen height by 6. So 1200/6 = 200, 1000/6 = 166, 800/6 = 133.

So if the screen resolution was 1280x800, my gl_PointSize would be this:
gl_PointSize = 133.3 * pointSize/ -modv.z;

This gets around the issue, but again, I'm hoping someone can shine some light on this and give me a more accurate method instead of passing in a scaling value.

Jeffg
02-24-2011, 07:00 AM
To clarify.. It's not screen height, but frame or container height of the program. Since I was in full screen, it equaled screen height.

mobeen
02-24-2011, 07:31 AM
This gets around the issue, but again, I'm hoping someone can shine some light on this and give me a more accurate method instead of passing in a scaling value.
Check http://msdn.microsoft.com/en-us/library/bb147281(v=vs.85).aspx
its in direct3d but u can do the same in opengl.