Do we need it if we already while calculating normal coordinates for a glNormal doing normal vec to be of a unit lenght.
I render MxN surface hight map from triangulars in diffuse_and_ambient colors ranging from blue to red with light. If GL_NORMALIZE, disabled triangulars with direct light have max of their color, while with GL_NORMALIZE enabled they are highlighted with white in direct falling light?

I do not really understand your question.

Do not use GL_NORMALIZE if you know what you are doing with your normals, it will be faster.

Use it otherwise, specially if the visual results differ…

Hi !

You can enable it, all modern OpenGL hardware will do it without any performance loss at all.


If turning normalize on makes a visible difference then you need it. Your normals can be normalized in software it is only scaling matrix operations skinning and other strange stuff that may require normals to be normalized. Your software to calculate normals should normalize once at the start and then send to hardware.

If you need normalize then you should understand why your normals aren’t of unit length. If you don’t understand what is causing non unit normals you should try to figure it out.

I’m a bit surprised that this is free on all hardware. It’s probably very inexpensive & free on some but I wouldn’t assume it’s entirely free everywhere under all circumstances.

So glNormal() does something different than just making a normal of unit lenght (especially when it is already of a unit). :wink: