加载具有 3D 纹理的浮点数组?
Load float array with 3D texture?
我有一个带有强度值的浮点数组,我需要在 opengl 中将此数组加载为 3d 纹理,并在片段着色器中将其读取为红色 (float sample= texture(cord,volumeText).r
)。
数组大小为256*256*256,强度值在0.0到256.0之间。
这是强度值的样本:
75.839354473071637,
64.083049468866022,
65.253933716444365,
79.992431196592577,
84.411485976957096,
0.0000000000000000,
82.020319431382831,
76.808403454586994,
79.974774618246158,
0.0000000000000000,
91.127273013466336,
84.009956557448433,
90.221356094672814,
87.567422484025627,
71.940263118478072,
0.0000000000000000,
0.0000000000000000,
74.487058398181944,
..................,
..................
要加载这样的纹理,您可以使用输入格式 GL_RED
并键入 GL_FLOAT
。适当大小的内部格式是 GL_R16F
。见 glTexImage3D
:
glTexImage3D(GL_TEXTURE_3D, 0, GL_R16F, 256, 256, 256, 0, GL_RED, GL_FLOAT, dataPtr)
内部格式GL_R16F
是浮点格式。这意味着当您从片段着色器中的纹理读取红色通道 (.r
) 时,这些值仍在 [0.0, 256.0].
范围内
我有一个带有强度值的浮点数组,我需要在 opengl 中将此数组加载为 3d 纹理,并在片段着色器中将其读取为红色 (float sample= texture(cord,volumeText).r
)。
数组大小为256*256*256,强度值在0.0到256.0之间。
这是强度值的样本:
75.839354473071637,
64.083049468866022,
65.253933716444365,
79.992431196592577,
84.411485976957096,
0.0000000000000000,
82.020319431382831,
76.808403454586994,
79.974774618246158,
0.0000000000000000,
91.127273013466336,
84.009956557448433,
90.221356094672814,
87.567422484025627,
71.940263118478072,
0.0000000000000000,
0.0000000000000000,
74.487058398181944,
..................,
..................
要加载这样的纹理,您可以使用输入格式 GL_RED
并键入 GL_FLOAT
。适当大小的内部格式是 GL_R16F
。见 glTexImage3D
:
glTexImage3D(GL_TEXTURE_3D, 0, GL_R16F, 256, 256, 256, 0, GL_RED, GL_FLOAT, dataPtr)
内部格式GL_R16F
是浮点格式。这意味着当您从片段着色器中的纹理读取红色通道 (.r
) 时,这些值仍在 [0.0, 256.0].