Hash :
b16d105f
        
        Author :
  
        
        Date :
2024-10-03T10:25:32
        
      
Remove Desktop GL front-end support For Desktop GL applications, please use Zink! Bug: angleproject:370937467 Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428 Reviewed-by: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
//
// Copyright 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.
//
#ifndef SAMPLE_UTIL_SAMPLE_APPLICATION_H
#define SAMPLE_UTIL_SAMPLE_APPLICATION_H
#include <stdint.h>
#include <list>
#include <memory>
#include <string>
#include "common/system_utils.h"
#include "util/EGLPlatformParameters.h"
#include "util/OSWindow.h"
#include "util/Timer.h"
#include "util/egl_loader_autogen.h"
class EGLWindow;
class GLWindowBase;
namespace angle
{
class Library;
}  // namespace angle
bool IsGLExtensionEnabled(const std::string &extName);
enum class ClientType
{
    // Client types used by the samples.  Add as needed.
    ES1,
    ES2,
    ES3_0,
    ES3_1,
};
class SampleApplication
{
  public:
    SampleApplication(std::string name,
                      int argc,
                      char **argv,
                      ClientType clientType = ClientType::ES2,
                      uint32_t width        = 1280,
                      uint32_t height       = 720);
    virtual ~SampleApplication();
    virtual bool initialize();
    virtual void destroy();
    virtual void step(float dt, double totalTime);
    virtual void draw();
    virtual void swap();
    virtual void onKeyUp(const Event::KeyEvent &keyEvent);
    virtual void onKeyDown(const Event::KeyEvent &keyEvent);
    OSWindow *getWindow() const;
    EGLConfig getConfig() const;
    EGLDisplay getDisplay() const;
    EGLSurface getSurface() const;
    EGLContext getContext() const;
    int run();
    void exit();
  private:
    bool popEvent(Event *event);
    std::string mName;
    uint32_t mWidth;
    uint32_t mHeight;
    bool mRunning;
    Timer mTimer;
    uint32_t mFrameCount;
    GLWindowBase *mGLWindow;
    EGLWindow *mEGLWindow;
    OSWindow *mOSWindow;
    angle::GLESDriverType mDriverType;
    EGLPlatformParameters mPlatformParams;
    // Handle to the entry point binding library.
    std::unique_ptr<angle::Library> mEntryPointsLib;
};
#endif  // SAMPLE_UTIL_SAMPLE_APPLICATION_H