I’m on a new laptop with a GeForce 840M GPU. The drivers are 344.75 (Windows 10 preview) and I’m using the GL_ARB_debug_output to see if I have errors in my rendering. I made it show up all errors and I get this one like all the time :
Usage warning: Generic vertex attribute array 1 uses a pointer with a small value (0x00000000). Is this intended to be used as an offset into a buffer object?
On top of that, the draws associated with that warning have visual flaws (I think the attributes may not be parsed due to that warning) as if it’s not a warning but an error.
This “warning” however is thrown because I have a list of attributes like say
attribute vec3 POSITION; attribute vec3 NORMAL; attribute vec2 TEXCOORD;
and when I call
glGetProgramiv( ProgramHandle, GL_ACTIVE_ATTRIBUTES, &ActiveAttributes );
and see where is what, it turns out that POSITION is on slot 1, NORMAL is on slot 0, and TEXCOORD is compiled out as it should as it’s not used. Now, because my vertex buffer has POSITION at offset = 0 you can see why the warning above is incorrect, the offset is supposed to be 0 for attrib 1.
Just to be clear, the same code running on the integrated Intel® HD Graphics 4600 runs flawlessly, no visual errors and no warnings.
Side remark for Nvidia Engineers : Tegra 3 and 4 GPUs report GL_INVALID_VALUE when querying uniforms with
glGetActiveUniform( ProgramHandle, Index, MaxLength, &NameLen, &Size, &Type, Name );
(MaxLength is sufficiently big(255), Index is 0…GL_ACTIVE_UNIFORMS - 1 ).
while glGetUniformLocation works as expected