/** * Draws a single texture to the emulator window, rotating the texture to correct for the 3DS's LCD rotation. */ void RendererOpenGL::DrawSingleScreenRotated(const TextureInfo& texture, float x, float y, float w, float h) { std::array<ScreenRectVertex, 4> vertices = { ScreenRectVertex(x, y, 1.f, 0.f), ScreenRectVertex(x+w, y, 1.f, 1.f), ScreenRectVertex(x, y+h, 0.f, 0.f), ScreenRectVertex(x+w, y+h, 0.f, 1.f), }; glBindTexture(GL_TEXTURE_2D, texture.handle); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_handle); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices.data()); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); }
/** * Draws a single texture to the emulator window, rotating the texture to correct for the 3DS's LCD rotation. */ void RendererOpenGL::DrawSingleScreenRotated(const TextureInfo& texture, float x, float y, float w, float h) { std::array<ScreenRectVertex, 4> vertices = {{ ScreenRectVertex(x, y, 1.f, 0.f), ScreenRectVertex(x+w, y, 1.f, 1.f), ScreenRectVertex(x, y+h, 0.f, 0.f), ScreenRectVertex(x+w, y+h, 0.f, 1.f), }}; state.texture_units[0].texture_2d = texture.handle; state.Apply(); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices.data()); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); }