首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伏尔坎正面缠绕顺序

伏尔坎正面缠绕顺序
EN

Stack Overflow用户
提问于 2019-11-08 00:49:53
回答 1查看 928关注 0票数 2

我将Vulkan VkPipelineRasterizationStateCreateInfo配置为使用CCW缠绕顺序:

代码语言:javascript
复制
 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;

我的装配状态使用三角形扇形来绘制一个四边形:

代码语言:javascript
复制
  VkPipelineInputAssemblyStateCreateInfo inputAssembly = {};
 inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
 inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN;
 inputAssembly.primitiveRestartEnable = VK_FALSE;

这是我的顶点缓冲区:

代码语言:javascript
复制
 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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 04:43:44

这是因为Vulkan使用了与OpenGL不同的坐标系。Vulkan的原点在左上角。

因此,您必须通过更改顶点/索引顺序、翻转视口或在顶点着色器中更改gl_position.y的sing来解决此问题。如果您的目标支持VK_KHR_maintenance1扩展,那么最简单的方法是使用use a negative height来翻转视口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58753504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档