Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 取样期间,VK_过滤器不工作_C++_Image_Vulkan - Fatal编程技术网

C++ 取样期间,VK_过滤器不工作

C++ 取样期间,VK_过滤器不工作,c++,image,vulkan,C++,Image,Vulkan,我在Vulkan使用的采样器有一个问题:无论我是使用VK_FILTER_NEAREST还是VK_FILTER_LINEAR创建采样器,无论是放大还是缩小过滤器,我的纹理都会像使用VK_FILTER_LINEAR创建一样进行采样 这是我创建采样器的方法: void Gui::Texture_2D::createVkSampler(const VkFilter & _magFilter,

我在Vulkan使用的采样器有一个问题:无论我是使用
VK_FILTER_NEAREST
还是
VK_FILTER_LINEAR
创建采样器,无论是放大还是缩小过滤器,我的纹理都会像使用
VK_FILTER_LINEAR
创建一样进行采样

这是我创建采样器的方法:

void                         Gui::Texture_2D::createVkSampler(const VkFilter & _magFilter,
                                                              const VkFilter & _minFilter,
                                                              const VkSamplerMipmapMode & _mipMapFilter,
                                                              const unsigned char & _maxAnisotropy) {
    VkSamplerCreateInfo samplerInfo = {};

    samplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
    samplerInfo.magFilter = _magFilter; // VK_FILTER_NEAREST
    samplerInfo.minFilter = _minFilter; // VK_FILTER_NEAREST
    samplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
    samplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
    samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
    samplerInfo.anisotropyEnable = _maxAnisotropy == 0 ? VK_FALSE : VK_TRUE; // 0
    samplerInfo.maxAnisotropy = _maxAnisotropy; // 0
    samplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK;
    samplerInfo.unnormalizedCoordinates = VK_FALSE;
    samplerInfo.compareEnable = VK_FALSE;
    samplerInfo.compareOp = VK_COMPARE_OP_ALWAYS;
    samplerInfo.mipmapMode = _mipMapFilter; // VK_SAMPLER_MIPMAP_MODE_NEAREST
    samplerInfo.mipLodBias = 0.0f;
    samplerInfo.minLod = 0.0f;
    samplerInfo.maxLod = static_cast<float>(image.getMipLevels());

    if (vkCreateSampler(logicalDevice, &samplerInfo, nullptr, &sampler) != VK_SUCCESS)
        throw std::runtime_error("Texture sampler creation failed!");

}
我希望有一种像地雷船一样的行为,但我得到了这种模糊的风格,我应该通过
VK\u FILTER\u LINEAR
获得这种风格

谢谢

更新

我在另一台电脑上运行了这个程序,并且纹理采样正确,我想我的GPU有一个bug/小故障/问题,我会尝试更新我的驱动程序

更新2

我更新了我的GPU驱动程序,现在我正在使用最新的Vulkan SDK版本(1.1.101.0),但仍然没有什么;RenderDoc分析的采样器报告没有问题,我使用的是正确的过滤器;删除/不使用mipmap没有帮助;没有一个验证层错误

我开始认为我的GPU仍然不能很好地支持Vulkan(Intel HD Graphics 620),所以我想我必须接受它并继续下去,因为我知道至少它可以在其他PC上工作

更新3

我更新了我的GPU驱动程序,现在我正在使用最新的Vulkan SDK版本(1.1.114.0),但仍然没有什么;RenderDoc分析的采样器报告没有问题,我使用的是正确的过滤器;删除/不使用mipmap没有帮助;没有一个验证层错误


我开始认为我的GPU仍然不能很好地支持Vulkan(Intel HD Graphics 620),所以我想我必须接受它并继续下去,因为我知道至少它可以在其他PC上工作。

我可以想象,这个错误在其他地方——也许你最终没有使用这个采样器。如果您还没有,我建议您启用验证层。假设没有验证层错误,我建议您运行RenderDoc-您可以在那里检查整个管道状态的详细信息。该采样器是我程序中唯一的采样器,因此我肯定在使用它,也没有验证层错误。请提供一个完整的示例,在这种情况下,不可能调试片段。。。如果这真的是你传递给着色器的采样器,那么它应该进行最近的过滤。但是如果没有所有相关的代码部分,很难判断。最简单的方法是运行RenderDoc,并检查您设置的采样器值是否实际传递给api。@SaschaWillems我用RenderDoc截图,并在vkCmdDrawIndexed期间检查采样器:如您所见,我使用的采样器是正确的,而且,
最近的
模式已启用(右下角).我可以想象这个错误在其他地方-也许你最终没有使用这个采样器。如果您还没有,我建议您启用验证层。假设没有验证层错误,我建议您运行RenderDoc-您可以在那里检查整个管道状态的详细信息。该采样器是我程序中唯一的采样器,因此我肯定在使用它,也没有验证层错误。请提供一个完整的示例,在这种情况下,不可能调试片段。。。如果这真的是你传递给着色器的采样器,那么它应该进行最近的过滤。但是如果没有所有相关的代码部分,很难判断。最简单的方法是运行RenderDoc,并检查您设置的采样器值是否实际传递给api。@SaschaWillems我用RenderDoc截图,并在vkCmdDrawIndexed期间检查采样器:如您所见,我使用的采样器是正确的,而且,
最近的
模式已启用(右下角)。
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib untitled.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 8/6/2 7/7/2 6/8/2
f 1/1/3 5/9/3 6/10/3 2/11/3
f 2/12/4 6/13/4 7/7/4 3/14/4
f 3/15/5 7/16/5 8/17/5 4/4/5
f 5/5/6 1/18/6 4/19/6 8/20/6