我正在使用 Sascha Willems 的纹理教程,它没有任何问题。然后我将纹理从 2D 纹理更改为 3D 纹理无符号 16 位。
我设置了正确的深度,然后更改了这些值:
VK_FORMAT_BC3_UNORM_BLOCK -> VK_FORMAT_R16_UINT
VK_IMAGE_TYPE_2D -> VK_IMAGE_TYPE_3D
and just one component -> view.components = { VK_COMPONENT_SWIZZLE_R };
在着色器中:
sampler2D -> sampler3D
但是我从 texture(volumeTexture, textPos).r 得到的所有值现在都为零。我想要做的是上传一个 UINT16 图像,但从片段着色器将其采样为浮点数。
如果我打开 RenderDoc,纹理看起来不错。
paste.org/private/i7dqw7pm0snkbf40eyywg
这是我在opengl中所做的:
const auto& glType = GL_SHORT;
const auto& glFormat = GL_LUMINANCE;
const auto& glInternalFormat = GL_LUMINANCE16F_ARB;
const auto& glClampMode = GL_CLAMP_TO_EDGE;