Hi guys. We've been having some trouble getting our particle system working on our laptops (which have "Intel 915GM" gfx chipsets). However, I have tried the same executable and dataset on a Vista x64 box with an nVidia 7950GT and an XP x64 box with an nVidia 8800 GTS, both of which work fine.
In an attempt to diagnose the problem I've put our codebase to one side and tried compiling the "Particles" demo that comes with the SDK. I get exactly the same results. I made the working and non-working PCs output the API info (part of the sample) and the only difference was the graphics chipset.
The particles sample uses the blend mode "glBlendFunc(GL_ONE, GL_ONE)". I notice that if I change it to something like "glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)" I can see the particles working (although rendered incorrectly as you would expect).
I should also mention that we have our particle system working fine
using another GLES library, but the performance of that library as a
whole is about 10x slower than the PowerVR one, so not really suitable
for our needs.
So to summarise I believe this could be an alpha blend bug with the SDK running on an Intel 915GM chipset. Does this sound feasible? We are currently using the SDK version: OGLES-1.1_WINDOWS_PCEMULATION_2.04.24.0811
Any feedback is greatly appreciated. Thanks in advance.
I’ve spent the evening trying out random ideas to get more insight into the problem and have come up with another theory. I think the issue is actually with texcoords.
I am now convinced that calling “glTexEnvf(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, GL_TRUE)” is having no effect on the Intel 915GM chipset. Has heard of anything like that before?
To anyone interested, the problem was definately the auto-generation of texcoords, or should I say the lack of. To work around this, I ended up writing a quad-sprite version of my particle renderer, which is chosen in preference to the point-sprite renderer when running on problem hardware. Thanks anyway guys.
Unfortunately older Intel integrated graphics chipsets have very limited OpenGL support, and as our OpenGL ES emulation library works as a wrapper on top of the existing OpenGL driver this may be a cause for missing features or incorrect rendering.
I believe GMA900 is limited OpenGL 1.4 plus a few extensions. Point sprites became a core feature in OpenGL 2.0, so it is quite possible that it doesn’t support point sprites at all.