我将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.0f,0.0f}},-0.5f},0.0f,{{ 0.5f,1.0f}}
};
顶点的顺序是逆时针方向。但是仅当我设置了rasterizer.frontFace = VK_FRONT_FACE_CLOCKWISE;
时,基元才会显示
这是为什么?
系统信息:
Windows 10,NVIDIA RTX3000,驱动程序:431.86