virtual const tcu::TextureFormat& getTextureFormat (void) const { return m_texture.getFormat(); }
virtual tcu::UVec3 getTextureDimension (void) const { return tcu::UVec3(m_texture.getWidth(), m_texture.getHeight(), 1); }
void ReadPixelsTest::render (tcu::Texture2D& reference) { // Create program const char* vertexSource = "attribute mediump vec2 a_coord;\n" "void main (void)\n" "{\n" "\tgl_Position = vec4(a_coord, 0.0, 1.0);\n" "}\n"; const char* fragmentSource = "void main (void)\n" "{\n" "\tgl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n" "}\n"; glu::ShaderProgram program(m_context.getRenderContext(), glu::makeVtxFragSources(vertexSource, fragmentSource)); m_testCtx.getLog() << program; TCU_CHECK(program.isOk()); GLU_CHECK_CALL(glUseProgram(program.getProgram())); // Render { const float coords[] = { -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 0.5f, 0.5f, -0.5f, 0.5f, -0.5f, -0.5f }; GLuint coordLoc; coordLoc = glGetAttribLocation(program.getProgram(), "a_coord"); GLU_CHECK_MSG("glGetAttribLocation()"); GLU_CHECK_CALL(glEnableVertexAttribArray(coordLoc)); GLU_CHECK_CALL(glVertexAttribPointer(coordLoc, 2, GL_FLOAT, GL_FALSE, 0, coords)); GLU_CHECK_CALL(glDrawArrays(GL_TRIANGLES, 0, 6)); GLU_CHECK_CALL(glDisableVertexAttribArray(coordLoc)); } // Render reference const int coordX1 = (int)((-0.5f * reference.getWidth() / 2.0f) + reference.getWidth() / 2.0f); const int coordY1 = (int)((-0.5f * reference.getHeight() / 2.0f) + reference.getHeight() / 2.0f); const int coordX2 = (int)(( 0.5f * reference.getWidth() / 2.0f) + reference.getWidth() / 2.0f); const int coordY2 = (int)(( 0.5f * reference.getHeight() / 2.0f) + reference.getHeight() / 2.0f); for (int x = 0; x < reference.getWidth(); x++) { if (x < coordX1 || x > coordX2) continue; for (int y = 0; y < reference.getHeight(); y++) { if (y >= coordY1 && y <= coordY2) reference.getLevel(0).setPixel(tcu::Vec4(0.0f, 0.0f, 0.0f, 1.0f), x, y); } } }