Path: blob/main_old/samples/hello_triangle/HelloTriangle.cpp
1695 views
//1// Copyright 2014 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//56// Based on Hello_Triangle.c from7// Book: OpenGL(R) ES 2.0 Programming Guide8// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner9// ISBN-10: 032150279510// ISBN-13: 978032150279711// Publisher: Addison-Wesley Professional12// URLs: http://safari.informit.com/978032156383513// http://www.opengles-book.com1415#include "SampleApplication.h"1617#include "util/shader_utils.h"1819class HelloTriangleSample : public SampleApplication20{21public:22HelloTriangleSample(int argc, char **argv)23: SampleApplication("HelloTriangle", argc, argv, 2, 0)24{}2526bool initialize() override27{28constexpr char kVS[] = R"(attribute vec4 vPosition;29void main()30{31gl_Position = vPosition;32})";3334constexpr char kFS[] = R"(precision mediump float;35void main()36{37gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);38})";3940mProgram = CompileProgram(kVS, kFS);41if (!mProgram)42{43return false;44}4546glClearColor(0.0f, 0.0f, 0.0f, 0.0f);4748return true;49}5051void destroy() override { glDeleteProgram(mProgram); }5253void draw() override54{55GLfloat vertices[] = {560.0f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f,57};5859// Set the viewport60glViewport(0, 0, getWindow()->getWidth(), getWindow()->getHeight());6162// Clear the color buffer63glClear(GL_COLOR_BUFFER_BIT);6465// Use the program object66glUseProgram(mProgram);6768// Load the vertex data69glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices);70glEnableVertexAttribArray(0);7172glDrawArrays(GL_TRIANGLES, 0, 3);73}7475private:76GLuint mProgram;77};7879int main(int argc, char **argv)80{81HelloTriangleSample app(argc, argv);82return app.run();83}848586