PDA

View Full Version : Point attenuation do not work like it should on most devices



mobilevisuals
12-15-2009, 04:36 AM
I am developing a game with OpenGL ES and I am using point attenuation. It is possible to enable it with glEnable(GL_POINT_SPRITE_OES). It is also possible to set the point size with glPointSize(pointSize).

The problem is that max and min size of the points and the PointSizeCoords do not have any effect on most devices. The result is that no Point attenuation is calculated with regards to the distance, so all the points get the size that is set with glPointSize(pointSize). The visual result of this is that all the points look very large from a long distance and very small from a short distance. It works like is should onN95 and n82,but not on the rest of them.

According to the information from Nokia, Point attenuation should work on all devices with OpenGL ES 1.1. These devices have this according to the information from Khronos:

Nokia N93,Nokia N95, Nokia N82, Nokia E90,Nokia 5630 XpressMusic,
Nokia E55,Nokia E52,Nokia 6720 Classic,Nokia E72,Nokia 6710 Navigator,Nokia N86 8MP,
Nokia 6120 Classic,Nokia E51,Nokia 5320 XPressMusic,Nokia N81,Nokia E71,Nokia 5700,
Nokia 6290,Nokia 6110 Navigator, Nokia N76,Nokia 6124 Classic,Nokia 6220c,
Nokia N85,Nokia E66,Nokia N79,Nokia E75, Nokia 5730 XpressMusic,
Nokia N78,Nokia 6650 S60,Nokia E63,Nokia E71x ATT,Nokia 6210 Navigator,Nokia N96,
Nokia 5800 XpressMusic,Nokia N97,Nokia 5530 XpressMusic,Nokia N97 Mini

I have tested on all of them,but it only works like it should on N95 and N82. Does anyone know how to make point attenuation work on the rest of the devices, or is it a bug in the implementation of point attenuation on all those devices?
This is the code that I have used:

glEnable(GL_POINT_SPRITE_OES);
glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, GL_TRUE );
glPointSize(pointSize);
glPointParameterf(GL_POINT_SIZE_MIN, 0.01f);
glPointParameterf(GL_POINT_SIZE_MAX,29.0f);//15
//the coordinates for calcluting point atenuation
iPointSizeCoords[0] = 1.0f;
iPointSizeCoords[1] = 0.103f;//063 103 för mkt
iPointSizeCoords[2] = 0.0f;
glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION, iPointSizeCoords);
glPointParameterf(GL_POINT_FADE_THRESHOLD_SIZE,5.f );

Xmas
12-16-2009, 04:20 AM
The first four (N93, N95, N82, E90) all share the same hardware implementation, so they should generally behave the same, though the driver version may differ (N82 and N95 are newer). All the others use the same software implementation as far as I know. You should send a bug report to Nokia.

mobilevisuals
12-17-2009, 02:20 AM
I see. Yes, that's a good idea. I will send a bug report to Nokia. Do you know where I can do that?