2017-06-15 1 views
-2

Ich muss in Vulkan Punktwolken mit Punkten zeichnen, die 4 Pixel breit sind. Ich muss auch Polylinien unterschiedlicher Dicke zeichnen. Ich habe keine solchen Demos in der Tutorial-Suite von Vulkan gesehen. Könnte mir jemand die richtigen Build-Befehle für Punktwolken unterschiedlicher Größe und Polylinien unterschiedlicher Dicke geben?Vulkan Equivalent von gl_point und gl_linestrip

Danke,

Tony

Antwort

1

Nun, Punkte sind VK_PRIMITIVE_TOPOLOGY_POINT_LIST und Schnurzughauptkörpers VK_PRIMITIVE_TOPOLOGY_LINE_STRIP von VkPrimitiveTopology ist.

Sondergrößen müssen von GPU/Treiber unterstützt werden. I.e. es kann einfach gemacht werden, wenn largePoints resp. wideLines von VkPhysicalDeviceFeatures werden unterstützt. Dann unterliegen sie weiteren Einschränkungen von VkPhysicalDeviceLimits.

Dann können Sie die Punktgröße ändern, indem Sie gl_PointSize (wenn Sie GLSL verwenden) in einem Nicht-Fragment-Shader schreiben.

Die Leitungsgröße wird bei der Pipelineerstellung (vkCreateGraphicsPipelines) in VkPipelineRasterizationStateCreateInfo mit lineWidth geändert. Oder Sie können einen dynamischen Status erstellen (VkPipelineDynamicStateCreateInfo mit VK_DYNAMIC_STATE_LINE_WIDTH). In diesem Fall können Sie die Größe später bei der Aufzeichnung des Befehlspuffers mit vkCmdSetLineWidth ändern.

Es sollte eine relativ einfache Änderung Ihrer typischen hello triangle App mit der Änderung der oben genannten (und die Scheitelpunktdaten natürlich) sein.