Let’s consider a surface ( could be a 3D representation of a function z=f(x,y) )
The thing is that i want to color each of that surface pixels with a diffrent color corseponding to the height from the XOY plane for example.
How can I do that in RealTime?
( I don’t want to use a color texture , the example was fictive. I want something like the 3DSmax4 affect region thing )
I think you sould use 1d textures.
if you have a grid of points with scalar values.
it will use linear interpolation between points.
with enough points a linear function can represent any function.
does this help?
Use 1-D texture, and set the UV coordinates to the height of the point, divided by some parameter (that will denote the maximal height). The linear interpolation will do the rest.
What about glColor3f(height / max_height, height / max_height, height / max_height); and gouraud shading?
This sounds stupidly simple but you would get the same result as with a 1D texture and it is even easier to use.
PS: you could use another color scheme than the grey one I proposed.
If you want your height map to match your gradient exactly, use a 1D texture. Setting the colors of each individual vertex will cause OpenGL to do its own color interpolation which will not match your gradient. You notice this effect more on a rough map as opposed to a smooth map.