Edit

kc3-lang/angle/samples/gles1/DrawTexture.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2019-09-25 18:29:28
    Hash : 57b37b6b
    Message : Rename util/system_utils to util/test_utils. This removes a GN naming conflict between util/system_utils and common/system_utils. This conflict was preventing us from adding unit tests to utils' version of system_utils. Since these functions are only useful to tests and samples rename them test_utils for simplicity. Will enable further development of ANGLE's standalone testing harness. Bug: angleproject:3162 Change-Id: I9e34fb69f96c5de6dc2453fce4148a0f285e15ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1825268 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • samples/gles1/DrawTexture.cpp
  • //
    // Copyright 2018 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 Simple_Texture2D.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 "texture_utils.h"
    #include "util/shader_utils.h"
    #include "util/test_utils.h"
    
    #include <GLES/gl.h>
    #include <GLES/glext.h>
    
    class GLES1DrawTextureSample : public SampleApplication
    {
      public:
        GLES1DrawTextureSample(int argc, char **argv)
            : SampleApplication("GLES1DrawTexture", argc, argv, 1, 0, 1280, 800)
        {}
    
        bool initialize() override
        {
            // Load the texture
            mTexture = CreateSimpleTexture2D();
    
            glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            glActiveTexture(GL_TEXTURE0);
            glEnable(GL_TEXTURE_2D);
    
            glActiveTexture(GL_TEXTURE0);
            glEnable(GL_TEXTURE_2D);
            glBindTexture(GL_TEXTURE_2D, mTexture);
    
            GLint crop[4] = {0, 0, 2, 2};
            glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    
            glViewport(0, 0, getWindow()->getWidth(), getWindow()->getHeight());
    
            return true;
        }
    
        void destroy() override { glDeleteTextures(1, &mTexture); }
    
        void draw() override
        {
            glClear(GL_COLOR_BUFFER_BIT);
    
            GLint windowWidth  = getWindow()->getWidth();
            GLint windowHeight = getWindow()->getHeight();
    
            glDrawTexiOES(mX, mY, 0, mWidth, mHeight);
            glDrawTexiOES(windowWidth - mX, mY, 0, mWidth, mHeight);
            glDrawTexiOES(mX, windowHeight - mY, 0, mWidth, mHeight);
            glDrawTexiOES(windowWidth - mX, windowHeight - mY, 0, mWidth, mHeight);
    
            mX += mReverseX ? -1 : 1;
            mY += mReverseY ? -1 : 1;
    
            if (mX + mWidth >= windowWidth)
                mReverseX = true;
            if (mX < 0)
                mReverseX = false;
    
            if (mY + mHeight >= windowHeight)
                mReverseY = true;
            if (mY < 0)
                mReverseY = false;
    
            ++mWidth;
            ++mHeight;
            if (mWidth >= windowWidth)
                mWidth = 0;
            if (mHeight >= windowHeight)
                mHeight = 0;
    
            angle::Sleep(16);
        }
    
      private:
        // Texture handle
        GLuint mTexture = 0;
    
        // Draw texture coordinates and dimensions to loop through
        GLint mX      = 0;
        GLint mY      = 0;
        GLint mWidth  = 0;
        GLint mHeight = 0;
    
        bool mReverseX = false;
        bool mReverseY = false;
    };
    
    int main(int argc, char **argv)
    {
        GLES1DrawTextureSample app(argc, argv);
        return app.run();
    }