PDA

View Full Version : can't get antialiased points



zobel
07-18-2002, 06:35 AM
does anybody know why certain h/w renderers don't apply antialiasing on points?

i mean, i expect circles but i got squares.
blending is enabled, BlendFunc chosen, GL_POINT_SMOOTH enabled.

any idea?

btw, all s/w renderers i tested spit out antialiased points.

Rob The Bloke
07-18-2002, 11:20 AM
The openGL standard doesn't specify what points look like, only that the size should be able to be set with glPointSize().

It seems fairly sensible to me to have them as pixel shaped entities, cos thats what they are.

If you want circles, you're probably best off using bill-boarded particles.

Morglum
07-18-2002, 11:35 AM
Have you tried a glHint with GL_NICEST parameter ?

V-man
07-18-2002, 05:13 PM
There was a demo using point_parameter that seemed to give circle like points. But I think that just adjusts the size based on the z-value.

Since its not specified in the gl specs, then there are no guarantees.

I seem to remember my old g200 giving round ones though. not sure.

V-man

zobel
07-19-2002, 12:27 AM
>>Have you tried a glHint with GL_NICEST parameter ?<<

i tried even this. glHint(GL_POINT_SMOOTH_HINT, GL_NICEST)
no way.
i am a little bit frustrated. seems i gotta billboard textured quads to go on...
thanx for the help guys

Niftybitz
07-23-2002, 07:16 AM
If you have the OpenGL Red Book, go and read it. It's explained there. Btw, having GL_POINT_SMOOTH on only means that fractional components for surrounding pixels of some pixel are being calculated (in case you didn't know)

If you dont have the book, here's how to do it (according the book):

- Enable point antialiasing (GL_POINT_SMOOTH)
- Disable blending
- Use alpha function that only permits fragments with alpha value greater than 0.5

Niftybitz
07-23-2002, 07:23 AM
I've tried it and here you have fully working code (if the used point-size is supported by your GL implementation):

glEnable(GL_POINT_SMOOTH);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER,.5);
glColor4f(0,0,1,1);
glPointSize(5);
glBegin(GL_POINTS);
glVertex3f(0,0,0);
glEnd();

zobel
07-29-2002, 01:45 AM
thanx niftybitz but it doesn't work.
i think some h/w renderers just don't apply point antialiasing... maybe it works on your machine, not on mine (macG4/ATIradeon7500). it works perfectly with the same card on a PC, while it does not work with matrox G200/400/450/550 on PC's... btw, it always works with no h/w acceleration on the configs named above

Niftybitz
07-29-2002, 06:33 AM
Hmm, that sucks. I have a authentic GeFORCE 256, so maybe it is hardware dependant. Strange, cuz i thought that if such a feature isn't supported by your hw, OpenGL would surely try to emulate it in software. Well, guess you're up to calculating the fractional values by hand http://www.opengl.org/discussion_boards/ubb/smile.gif

Ciao,

Niftybitz.