每个对象的不同纹理的Vulkan动态缓冲区

时间:2018-05-07 00:39:24

标签: glsl vulkan

我目前正在使用动态缓冲区来存储多个对象的制服,并在不更改着色器的情况下单独更新它们。问题是,当我向我的描述符添加VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER时,渲染为this(由于信誉不佳,我无法发布图像)!只是纹理背景的颜色。这是我对descriptor()的初始化。

descriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
    descriptorWrites[0].dstSet = descriptorSet;
    descriptorWrites[0].pNext = NULL;
    descriptorWrites[0].dstBinding = 0;
    descriptorWrites[0].dstArrayElement = 0;
    descriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
    descriptorWrites[0].descriptorCount = 1;
    descriptorWrites[0].pBufferInfo = &bufferInfo;

    descriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
    descriptorWrites[1].dstSet = descriptorSet;
    descriptorWrites[1].pNext = NULL;
    descriptorWrites[1].dstBinding = 1;
    descriptorWrites[1].dstArrayElement = 0;
    descriptorWrites[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
    descriptorWrites[1].descriptorCount = 1;
    descriptorWrites[1].pImageInfo = &imageInfo;

这是我的片段着色器:

#version 450
#extension GL_ARB_separate_shader_objects : enable

layout(set=0, binding = 1) uniform sampler2D texSampler;

layout(location = 0) in vec3 fragColor;
layout(location = 1) in vec2 fragTexCoord;


layout(location = 0) out vec4 outColor;

void main() {
    outColor = texture(texSampler, fragTexCoord*2);
}

这可能是什么原因?我更新了描述符布局,验证层不会抛出任何错误,动态缓冲区即使对多个对象也能正常工作。绑定是否已损坏或类似?

0 个答案:

没有答案