[Piglit] [PATCH 3/8] util: refactor GLES2 piglit_draw_rect*
Chia-I Wu
olvaffe at gmail.com
Sat Sep 3 09:29:26 PDT 2011
Move the common code to a new function, draw_arrays.
---
tests/util/piglit-util-gles2.c | 63 +++++++++++++++++++++++-----------------
1 files changed, 36 insertions(+), 27 deletions(-)
diff --git a/tests/util/piglit-util-gles2.c b/tests/util/piglit-util-gles2.c
index ccc14da..3f7addd 100644
--- a/tests/util/piglit-util-gles2.c
+++ b/tests/util/piglit-util-gles2.c
@@ -175,6 +175,38 @@ piglit_escape_exit_key(unsigned char key, int x, int y)
}
/**
+ * Call glDrawArrays. verts is expected to be
+ *
+ * float verts[4][4];
+ *
+ * if not NULL; tex is expected to be
+ *
+ * float tex[4][2];
+ *
+ * if not NULL.
+ */
+static void
+draw_arrays(const GLvoid *verts, const GLvoid *tex)
+{
+ if (verts) {
+ glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, verts);
+ glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
+ }
+
+ if (tex) {
+ glVertexAttribPointer(PIGLIT_ATTRIB_TEX, 2, GL_FLOAT, GL_FALSE, 0, tex);
+ glEnableVertexAttribArray(PIGLIT_ATTRIB_TEX);
+ }
+
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+
+ if (verts)
+ glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
+ if (tex)
+ glDisableVertexAttribArray(PIGLIT_ATTRIB_TEX);
+}
+
+/**
* Convenience function to draw an axis-aligned rectangle.
*/
GLvoid
@@ -199,12 +231,7 @@ piglit_draw_rect(float x, float y, float w, float h)
verts[3][2] = 0.0;
verts[3][3] = 1.0;
- glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, verts);
- glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
- glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
+ draw_arrays(verts, NULL);
}
@@ -233,12 +260,7 @@ piglit_draw_rect_back(float x, float y, float w, float h)
verts[3][2] = 0.0;
verts[3][3] = 1.0;
- glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, verts);
- glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
- glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
+ draw_arrays(verts, NULL);
}
@@ -267,12 +289,7 @@ piglit_draw_rect_z(float z, float x, float y, float w, float h)
verts[3][2] = z;
verts[3][3] = 1.0;
- glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, verts);
- glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
- glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
+ draw_arrays(verts, NULL);
}
/**
@@ -311,15 +328,7 @@ piglit_draw_rect_tex(float x, float y, float w, float h,
tex[3][0] = tx + tw;
tex[3][1] = ty + th;
- glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, verts);
- glVertexAttribPointer(PIGLIT_ATTRIB_TEX, 2, GL_FLOAT, GL_FALSE, 0, tex);
- glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
- glEnableVertexAttribArray(PIGLIT_ATTRIB_TEX);
-
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
- glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
- glDisableVertexAttribArray(PIGLIT_ATTRIB_TEX);
+ draw_arrays(verts, tex);
}
/**
--
1.7.5.4
More information about the Piglit
mailing list