Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Why is an OpenGL positional (spot) light interfering with non-positional light

I have a legacy OpenGL fixed-pipeline app which has been ported from Windows (32-bit) to MacOS 64-bit.

The problem is that if I have a scene with a non-positional light, everything works great. If I add a positional spotlight the two lights interact, and I get incorrect results.

This problem does not occur on X86_64 Macs. It does occur when the app is X86_64 running under Rosetta or native ARM64.

So it's either an Apple Silicon OpenGL driver behaviour my code is triggering, or something with the on-chip Apple Silicon graphics.

Here is the "normal" case: the spotlight is to the right:

Here, I have moved the spotlight down (Y = 1). Notice the black areas on the cube. That's incorrect.

Now, I turn off the spotlight by commenting out the "makeALight" call for the spotlight (light 6). Now, the cube is evenly lit.

Here is the test code I use to generate the lights. You will need to install glfw with brew to build it.

Why is an OpenGL positional (spot) light interfering with non-positional light
 
 
Q