C# OpenGL Gl.glColor3f如何使用一个参数进行着色?

C# OpenGL Gl.glColor3f如何使用一个参数进行着色?,c#,opengl,colors,vertex,C#,Opengl,Colors,Vertex,我对OpenGL中的可视化有一些疑问。我在3D空间中有点,每个点也有一个额外的值,代表不同的值,比如温度,压力等等。用户选择此方法之一,其他方法为每个点设置附加值 第一个问题是,这些值具有不同的范围,例如: temperature: <80; 2000> preassure: <-500; 400> gamma: <0,5; 1,8> ... 温度: 预紧: 伽马: ... 现在我想把它想象成可靠的,比如温度:80℃是冷的,所以蓝色,2000℃是热的,所以

我对OpenGL中的可视化有一些疑问。我在3D空间中有点,每个点也有一个额外的值,代表不同的值,比如温度,压力等等。用户选择此方法之一,其他方法为每个点设置附加值

第一个问题是,这些值具有不同的范围,例如:

temperature: <80; 2000>
preassure: <-500; 400>
gamma: <0,5; 1,8>
...
温度:
预紧:
伽马:
...
现在我想把它想象成可靠的,比如温度:80℃是冷的,所以蓝色,2000℃是热的,所以红色。类似于其他,预紧,伽马等

第二个问题是Gl.glColor3f接受3个参数:红色、绿色、蓝色。每个ponit只有一个参数。 RGB的范围是,我的值有不同的范围


有人有什么想法或算法可以帮助mi解决这个问题吗?

首先,将您的值重新映射到0-1的范围内,如下所示:

double t = ( value - min ) / ( max - min ); // i.e. min could be 80 and max 2000
// it might be a good idea to limit t to 0-1 here, in case
// your original value could be outside the valid range
然后,在颜色之间进行线性插值,如(伪代码):


这应该让你开始了

您使用的是固定管道还是着色器?
Color a = Blue, b = Red
double inv = 1.0 - t

Color result = Color( inv * a.R + t * b.R,
                      inv * a.G + t * b.G,
                      inv * a.B + t * b.B )