opengl Vulkan中GL_LINE_LOOP的等效项

368yc8dk  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(121)

我最近开始学习Vulkan,并且正在进行一个需要将OpenGL代码迁移到Vulkan的项目。我一直在Vulkan中搜索OpenGL的“GL_LINE_LOOP”的等效项,以迁移以下代码:

glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
    glVertex2f(m_rCircFit.left(),m_rCircFit.top()); //(x,y)
    glVertex2f(m_rCircFit.right(),m_rCircFit.top()); //(x+width,y)
    glVertex2f(m_rCircFit.right(),m_rCircFit.bottom()); //(x+width,y+height)
    glVertex2f(m_rCircFit.left(),m_rCircFit.bottom()); //(x,y+height)
glEnd();

我可以使用'VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP'绘制矩形,但输出如下所示:

但是我不想使用连接左上角和右下角顶点的对角线。有人能告诉我在Vulkan中使用什么来实现与'GL_LINE_LOOP'相同的功能吗?

pn9klfpd

pn9klfpd1#

线循环是一个线条带,它带有一条连接第一个顶点和最后一个顶点的附加线。因此,直接平移标志将是VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
但是请注意,如果您使用的是这种粒度,那您就是在浪费时间。Vulkan使用的方法与现代OpenGL完全不同,您使用的不是参考现代OpenGL,而是古老的glBegin
如果每帧的绘制调用超过1-3次,你可以直接扔掉代码,继续使用OpenGL。Vulkan就是将所有数据批处理在一起,然后一次性渲染。

相关问题