【问题标题】:Load float array with 3D texture?加载具有 3D 纹理的浮点数组?
【发布时间】:2019-08-19 15:57:14
【问题描述】:

我有一个带有强度值的浮点数组,我需要在 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,
   ..................,
   ..................

【问题讨论】:

  • 不清楚您有什么精度要求。

标签: opengl glsl textures


【解决方案1】:

要加载这样的纹理,您可以使用输入格式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] 范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2017-12-27
    • 2023-03-07
    相关资源
    最近更新 更多