Я настраиваю Vulkan VkPipelineRasterizationStateCreateInfo
для использования порядка намотки CCW:
VkPipelineRasterizationStateCreateInfo rasterizer = {};
rasterizer.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
rasterizer.depthClampEnable = VK_FALSE;
rasterizer.rasterizerDiscardEnable = VK_FALSE;
rasterizer.polygonMode = VK_POLYGON_MODE_FILL;
rasterizer.lineWidth = 1.0f;
rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
rasterizer.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
rasterizer.depthBiasEnable = VK_FALSE;
Мое состояние сборки использует треугольный веер для рисования четырехугольника:
VkPipelineInputAssemblyStateCreateInfo inputAssembly = {};
inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN;
inputAssembly.primitiveRestartEnable = VK_FALSE;
Вот мой буфер вершин:
const VertexPos2Col3 vertices[4] = {
{{0.5f, 0.5f}, {1.0f, 1.0f, 1.0f}},
{{-0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}},
{{-0.5f, -0.5f}, {0.0f, 0.0f, 1.0f}},
{{ 0.5f, -0.5f}, {0.0f, 0.0f, 1.0f}}
};
Порядок вершин против часовой стрелки. Но примитив появляется только если я установил rasterizer.frontFace = VK_FRONT_FACE_CLOCKWISE;
Почему это так?
Информация о системе:
Windows 10, NVIDIA RTX3000, драйвер: 431,86