diff --git a/renderdoc/data/glsl/text.vert b/renderdoc/data/glsl/text.vert index d7097616c..8358cd44e 100644 --- a/renderdoc/data/glsl/text.vert +++ b/renderdoc/data/glsl/text.vert @@ -33,13 +33,18 @@ layout (location = 1) out vec2 glyphuv; void main(void) { - const vec3 verts[4] = vec3[4](vec3( 0.0, 0.0, 0.5), + const vec3 verts[6] = vec3[6](vec3( 0.0, 0.0, 0.5), + vec3( 1.0, 0.0, 0.5), + vec3( 0.0, 1.0, 0.5), + vec3( 1.0, 0.0, 0.5), vec3( 0.0, 1.0, 0.5), vec3( 1.0, 1.0, 0.5)); - vec3 pos = verts[VERTEX_ID]; - uint strindex = uint(INSTANCE_ID); + uint vert = uint(VERTEX_ID)%6u; + + vec3 pos = verts[vert]; + uint strindex = uint(VERTEX_ID)/6u; vec2 charPos = vec2(strindex + pos.x + general.TextPosition.x, pos.y + general.TextPosition.y); diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index e1d631fa3..fc70d20ba 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -1821,7 +1821,7 @@ void WrappedOpenGL::RenderOverlayStr(float x, float y, const char *text) gl.glUseProgram(ctxdata.Program); // draw string - gl.glDrawArraysInstanced(eGL_TRIANGLE_STRIP, 0, 4, (GLsizei)len); + gl.glDrawArrays(eGL_TRIANGLES, 0, 6 * (GLsizei)len); } else { diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index 5d36b460b..e0a63452b 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -1072,6 +1072,8 @@ VulkanDebugManager::VulkanDebugManager(WrappedVulkan *driver, VkDevice dev) RDCASSERTEQUAL(vkr, VK_SUCCESS); } + ia.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + pipeInfo.layout = m_TextPipeLayout; vkr = m_pDriver->vkCreateGraphicsPipelines(dev, VK_NULL_HANDLE, 1, &pipeInfo, NULL, @@ -2712,7 +2714,7 @@ void VulkanDebugManager::RenderTextInternal(const TextPrintState &textstate, flo ->CmdBindDescriptorSets(Unwrap(textstate.cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, Unwrap(m_TextPipeLayout), 0, 1, UnwrapPtr(m_TextDescSet), 2, offsets); - ObjDisp(textstate.cmd)->CmdDraw(Unwrap(textstate.cmd), 4, (uint32_t)strlen(text), 0, 0); + ObjDisp(textstate.cmd)->CmdDraw(Unwrap(textstate.cmd), 6 * (uint32_t)strlen(text), 1, 0, 0); } void VulkanDebugManager::ReplaceResource(ResourceId from, ResourceId to)