From: Steinar H. Gunderson Date: Mon, 20 Nov 2017 17:27:22 +0000 (+0100) Subject: Use glGetTexImage() instead of glReadPixels() for reading back test data. X-Git-Tag: 1.6.0~52 X-Git-Url: https://git.sesse.net/?p=movit;a=commitdiff_plain;h=e8a32d0ba0f66979f3c95702b95cd3ab967987c4 Use glGetTexImage() instead of glReadPixels() for reading back test data. Generally cleaner, and also paves the way for when we have FBO-less rendering from compute shaders. --- diff --git a/test_util.cpp b/test_util.cpp index 6214dbc..096c07a 100644 --- a/test_util.cpp +++ b/test_util.cpp @@ -296,15 +296,14 @@ void EffectChainTester::internal_run(T *out_data, T *out_data2, T *out_data3, T T *data[4] = { out_data, out_data2, out_data3, out_data4 }; - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - check_error(); for (unsigned i = 0; i < num_outputs; ++i) { T *ptr = data[i]; - glReadBuffer(GL_COLOR_ATTACHMENT0 + i); + glBindTexture(GL_TEXTURE_2D, texnum[i]); + check_error(); if (!epoxy_is_desktop_gl() && (format == GL_RED || format == GL_BLUE || format == GL_ALPHA)) { // GLES will only read GL_RGBA. T *temp = new T[width * height * 4]; - glReadPixels(0, 0, width, height, GL_RGBA, internal_format, temp); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, type, temp); check_error(); if (format == GL_ALPHA) { for (unsigned i = 0; i < width * height; ++i) { @@ -321,7 +320,7 @@ void EffectChainTester::internal_run(T *out_data, T *out_data2, T *out_data3, T } delete[] temp; } else { - glReadPixels(0, 0, width, height, format, internal_format, ptr); + glGetTexImage(GL_TEXTURE_2D, 0, format, type, ptr); check_error(); }