diff --git a/Tests/LibGL/TestRender.cpp b/Tests/LibGL/TestRender.cpp index 7c67097b07..640c54252f 100644 --- a/Tests/LibGL/TestRender.cpp +++ b/Tests/LibGL/TestRender.cpp @@ -26,6 +26,15 @@ static NonnullOwnPtr create_testing_context(int width, int height auto bitmap = MUST(Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRx8888, { width, height })); auto context = GL::create_context(*bitmap); GL::make_context_current(context); + + // Assume some defaults for our testing contexts + glFrontFace(GL_CCW); + glCullFace(GL_BACK); + glEnable(GL_CULL_FACE); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + return context; } @@ -51,13 +60,6 @@ TEST_CASE(0001_simple_triangle) { auto context = create_testing_context(64, 64); - glFrontFace(GL_CCW); - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_TRIANGLES); glColor3f(1, 1, 1); glVertex2f(0, 1); @@ -75,13 +77,6 @@ TEST_CASE(0002_quad_color_interpolation) { auto context = create_testing_context(64, 64); - glFrontFace(GL_CCW); - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_QUADS); glColor3f(1, 0, 0); @@ -99,3 +94,26 @@ TEST_CASE(0002_quad_color_interpolation) context->present(); expect_bitmap_equals_reference(context->frontbuffer(), "0002_quad_color_interpolation"); } + +TEST_CASE(0003_rect_w_coordinate_regression) +{ + auto context = create_testing_context(64, 64); + + glEnable(GL_DEPTH_TEST); + glClear(GL_DEPTH_BUFFER_BIT); + + glColor3f(0, 1, 0); + glRectf(-0.5f, -0.5f, 0.5f, 0.5f); + + glBegin(GL_TRIANGLES); + glColor3f(1, 0, 0); + glVertex2i(-1, -1); + glVertex2i(1, -1); + glVertex2i(-1, 1); + glEnd(); + + EXPECT_EQ(glGetError(), 0u); + + context->present(); + expect_bitmap_equals_reference(context->frontbuffer(), "0003_rect_w_coordinate_regression"); +} diff --git a/Tests/LibGL/reference-images/0003_rect_w_coordinate_regression.qoi b/Tests/LibGL/reference-images/0003_rect_w_coordinate_regression.qoi new file mode 100644 index 0000000000..262ab88039 Binary files /dev/null and b/Tests/LibGL/reference-images/0003_rect_w_coordinate_regression.qoi differ diff --git a/Userland/Libraries/LibGL/GLContext.cpp b/Userland/Libraries/LibGL/GLContext.cpp index de73623923..4618383689 100644 --- a/Userland/Libraries/LibGL/GLContext.cpp +++ b/Userland/Libraries/LibGL/GLContext.cpp @@ -2878,10 +2878,10 @@ void GLContext::gl_rect(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION); gl_begin(GL_POLYGON); - gl_vertex(x1, y1, 0.0, 0.0); - gl_vertex(x2, y1, 0.0, 0.0); - gl_vertex(x2, y2, 0.0, 0.0); - gl_vertex(x1, y2, 0.0, 0.0); + gl_vertex(x1, y1, 0.0, 1.0); + gl_vertex(x2, y1, 0.0, 1.0); + gl_vertex(x2, y2, 0.0, 1.0); + gl_vertex(x1, y2, 0.0, 1.0); gl_end(); }