我最近开始学习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'相同的功能吗?
1条答案
按热度按时间pn9klfpd1#
线循环是一个线条带,它带有一条连接第一个顶点和最后一个顶点的附加线。因此,直接平移标志将是
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
。但是请注意,如果您使用的是这种粒度,那您就是在浪费时间。Vulkan使用的方法与现代OpenGL完全不同,您使用的不是参考现代OpenGL,而是古老的
glBegin
。如果每帧的绘制调用超过1-3次,你可以直接扔掉代码,继续使用OpenGL。Vulkan就是将所有数据批处理在一起,然后一次性渲染。