| // | |
| // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // Based on Hello_Triangle.c from | |
| // Book: OpenGL(R) ES 2.0 Programming Guide | |
| // Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner | |
| // ISBN-10: 0321502795 | |
| // ISBN-13: 9780321502797 | |
| // Publisher: Addison-Wesley Professional | |
| // URLs: http://safari.informit.com/9780321563835 | |
| // http://www.opengles-book.com | |
| #include "SampleApplication.h" | |
| #include "util/shader_utils.h" | |
| class HelloTriangleSample : public SampleApplication | |
| { | |
| public: | |
| HelloTriangleSample(int argc, char **argv) | |
| : SampleApplication("HelloTriangle", argc, argv, 2, 0) | |
| {} | |
| bool initialize() override | |
| { | |
| constexpr char kVS[] = R"(attribute vec4 vPosition; | |
| void main() | |
| { | |
| gl_Position = vPosition; | |
| })"; | |
| constexpr char kFS[] = R"(precision mediump float; | |
| void main() | |
| { | |
| gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); | |
| })"; | |
| mProgram = CompileProgram(kVS, kFS); | |
| if (!mProgram) | |
| { | |
| return false; | |
| } | |
| glClearColor(0.0f, 0.0f, 0.0f, 0.0f); | |
| return true; | |
| } | |
| void destroy() override { glDeleteProgram(mProgram); } | |
| void draw() override | |
| { | |
| GLfloat vertices[] = { | |
| 0.0f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, | |
| }; | |
| // Set the viewport | |
| glViewport(0, 0, getWindow()->getWidth(), getWindow()->getHeight()); | |
| // Clear the color buffer | |
| glClear(GL_COLOR_BUFFER_BIT); | |
| // Use the program object | |
| glUseProgram(mProgram); | |
| // Load the vertex data | |
| glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices); | |
| glEnableVertexAttribArray(0); | |
| glDrawArrays(GL_TRIANGLES, 0, 3); | |
| } | |
| private: | |
| GLuint mProgram; | |
| }; | |
| int main(int argc, char **argv) | |
| { | |
| HelloTriangleSample app(argc, argv); | |
| return app.run(); | |
| } |