Macintosh (≥ 10.9)
A problem unique to AMD systems is that disabling a vertex attribute array and setting its value
instead using glVertexAttrib* does not work if the vertex attribute is in
location 0.
You will see several demo programs on this web site that force the
mcPosition variable into location 0 since that attribute will always have a
VBO in our examples. This problem is known and will be fixed at some point, but the
last time I checked, it had not yet been corrected.
Additional caveat: It is possible that some of the following issues
are only present on AMD systems. I have not
verified whether these issues are present or absent on Macintosh systems
with NVIDIA GPUs.
- The freeglut window system interface does not enable
use of RCs beyond 2.1, even on
OS version 10.9. Use of the GLFW window system interface is highly recommended.
- You can safely ignore the two warning messages that
appear when compiling Controller.c++.
- The glDrawElements function can only be used
along with an element buffer. Hence
the fourth parameter to glDrawElements must either be 0 or an integer offset
into the element buffer. In particular, it cannot be a
local integer index array. If you pass such a local array, your program will compile,
but it will produce
an "invalid operation" error at runtime, and the call will be ignored.
- Interface blocks can cause problems if some shader
stages through which they
are passed do not use all fields. The compiler (or linker) seems to incorrectly
eliminate them. That then causes problems at link time. Typically the program will
just segfault!