| // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_ |
| #define FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_ |
| |
| #include <GLES2/gl2.h> |
| #include <GLES2/gl2ext.h> |
| #include <functional> |
| #include <memory> |
| |
| #include "flutter/fml/macros.h" |
| |
| namespace flutter { |
| namespace egl { |
| |
| // Lookup table for GLES functions. |
| class ProcTable { |
| public: |
| static std::shared_ptr<ProcTable> Create(); |
| |
| virtual ~ProcTable(); |
| |
| virtual void GenTextures(GLsizei n, GLuint* textures) const; |
| virtual void DeleteTextures(GLsizei n, const GLuint* textures) const; |
| virtual void BindTexture(GLenum target, GLuint texture) const; |
| virtual void TexParameteri(GLenum target, GLenum pname, GLint param) const; |
| virtual void TexImage2D(GLenum target, |
| GLint level, |
| GLint internalformat, |
| GLsizei width, |
| GLsizei height, |
| GLint border, |
| GLenum format, |
| GLenum type, |
| const void* data) const; |
| |
| protected: |
| ProcTable(); |
| |
| private: |
| using GenTexturesProc = void(__stdcall*)(GLsizei n, GLuint* textures); |
| using DeleteTexturesProc = void(__stdcall*)(GLsizei n, |
| const GLuint* textures); |
| using BindTextureProc = void(__stdcall*)(GLenum target, GLuint texture); |
| using TexParameteriProc = void(__stdcall*)(GLenum target, |
| GLenum pname, |
| GLint param); |
| using TexImage2DProc = void(__stdcall*)(GLenum target, |
| GLint level, |
| GLint internalformat, |
| GLsizei width, |
| GLsizei height, |
| GLint border, |
| GLenum format, |
| GLenum type, |
| const void* data); |
| |
| GenTexturesProc gen_textures_; |
| DeleteTexturesProc delete_textures_; |
| BindTextureProc bind_texture_; |
| TexParameteriProc tex_parameteri_; |
| TexImage2DProc tex_image_2d_; |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(ProcTable); |
| }; |
| |
| } // namespace egl |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_ |