5 ANGLETest::ANGLETest(EGLint glesMajorVersion, EGLint requestedRenderer)
9 mEGLWindow = new EGLWindow(1280, 720, glesMajorVersion, requestedRenderer);
12 void ANGLETest::SetUp()
14 if (!initTestWindow())
16 FAIL() << "Failed to create ANGLE test window.";
19 if (!resizeWindow(mEGLWindow->getWidth(), mEGLWindow->getHeight()))
21 FAIL() << "Failed to resize ANGLE test window.";
24 if (!createEGLContext())
26 FAIL() << "egl context creation failed.";
30 void ANGLETest::TearDown()
33 mOSWindow->messageLoop();
35 if (!destroyEGLContext())
37 FAIL() << "egl context destruction failed.";
40 // Check for quit message
42 while (mOSWindow->popEvent(&myEvent))
44 if (myEvent.Type == Event::EVENT_CLOSED)
50 if (!destroyTestWindow())
52 FAIL() << "ANGLE test window destruction failed.";
56 void ANGLETest::swapBuffers()
61 void ANGLETest::drawQuad(GLuint program, const std::string& positionAttribName, GLfloat quadDepth)
63 GLint positionLocation = glGetAttribLocation(program, positionAttribName.c_str());
65 glUseProgram(program);
67 const GLfloat vertices[] =
69 -1.0f, 1.0f, quadDepth,
70 -1.0f, -1.0f, quadDepth,
71 1.0f, -1.0f, quadDepth,
73 -1.0f, 1.0f, quadDepth,
74 1.0f, -1.0f, quadDepth,
75 1.0f, 1.0f, quadDepth,
78 glVertexAttribPointer(positionLocation, 3, GL_FLOAT, GL_FALSE, 0, vertices);
79 glEnableVertexAttribArray(positionLocation);
81 glDrawArrays(GL_TRIANGLES, 0, 6);
83 glDisableVertexAttribArray(positionLocation);
84 glVertexAttribPointer(positionLocation, 4, GL_FLOAT, GL_FALSE, 0, NULL);
89 GLuint ANGLETest::compileShader(GLenum type, const std::string &source)
91 GLuint shader = glCreateShader(type);
93 const char *sourceArray[1] = { source.c_str() };
94 glShaderSource(shader, 1, sourceArray, NULL);
95 glCompileShader(shader);
98 glGetShaderiv(shader, GL_COMPILE_STATUS, &compileResult);
100 if (compileResult == 0)
103 glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
105 std::vector<GLchar> infoLog(infoLogLength);
106 glGetShaderInfoLog(shader, infoLog.size(), NULL, &infoLog[0]);
108 std::cerr << "shader compilation failed: " << &infoLog[0];
110 glDeleteShader(shader);
117 bool ANGLETest::extensionEnabled(const std::string &extName)
119 const char* extString = reinterpret_cast<const char*>(glGetString(GL_EXTENSIONS));
120 return strstr(extString, extName.c_str()) != NULL;
123 void ANGLETest::setWindowWidth(int width)
125 mEGLWindow->setWidth(width);
128 void ANGLETest::setWindowHeight(int height)
130 mEGLWindow->setHeight(height);
133 void ANGLETest::setConfigRedBits(int bits)
135 mEGLWindow->setConfigRedBits(bits);
138 void ANGLETest::setConfigGreenBits(int bits)
140 mEGLWindow->setConfigGreenBits(bits);
143 void ANGLETest::setConfigBlueBits(int bits)
145 mEGLWindow->setConfigBlueBits(bits);
148 void ANGLETest::setConfigAlphaBits(int bits)
150 mEGLWindow->setConfigAlphaBits(bits);
153 void ANGLETest::setConfigDepthBits(int bits)
155 mEGLWindow->setConfigDepthBits(bits);
158 void ANGLETest::setConfigStencilBits(int bits)
160 mEGLWindow->setConfigStencilBits(bits);
163 void ANGLETest::setMultisampleEnabled(bool enabled)
165 mEGLWindow->setMultisample(enabled);
168 int ANGLETest::getClientVersion() const
170 return mEGLWindow->getClientVersion();
173 int ANGLETest::getWindowWidth() const
175 return mEGLWindow->getWidth();
178 int ANGLETest::getWindowHeight() const
180 return mEGLWindow->getHeight();
183 bool ANGLETest::isMultisampleEnabled() const
185 return mEGLWindow->isMultisample();
188 bool ANGLETest::createEGLContext()
190 return mEGLWindow->initializeGL(mOSWindow);
193 bool ANGLETest::destroyEGLContext()
195 mEGLWindow->destroyGL();
199 bool ANGLETest::initTestWindow()
201 mOSWindow = CreateOSWindow();
202 if (!mOSWindow->initialize("ANGLE_TEST", 128, 128))
207 mOSWindow->setVisible(false);
212 bool ANGLETest::destroyTestWindow()
216 mOSWindow->destroy();
224 bool ANGLETest::resizeWindow(int width, int height)
226 return mOSWindow->resize(width, height);
229 void ANGLETest::setWindowVisible(bool isVisible)
231 mOSWindow->setVisible(isVisible);