Flutter Windows Embedder
proc_table.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_
7 
8 #include <GLES2/gl2.h>
9 #include <GLES2/gl2ext.h>
10 #include <functional>
11 #include <memory>
12 
13 #include "flutter/fml/macros.h"
14 
15 namespace flutter {
16 namespace egl {
17 
18 // Lookup table for GLES functions.
19 class ProcTable {
20  public:
21  static std::shared_ptr<ProcTable> Create();
22 
23  virtual ~ProcTable();
24 
25  virtual void GenTextures(GLsizei n, GLuint* textures) const;
26  virtual void DeleteTextures(GLsizei n, const GLuint* textures) const;
27  virtual void BindTexture(GLenum target, GLuint texture) const;
28  virtual void TexParameteri(GLenum target, GLenum pname, GLint param) const;
29  virtual void TexImage2D(GLenum target,
30  GLint level,
31  GLint internalformat,
32  GLsizei width,
33  GLsizei height,
34  GLint border,
35  GLenum format,
36  GLenum type,
37  const void* data) const;
38 
39  protected:
40  ProcTable();
41 
42  private:
43  using GenTexturesProc = void(__stdcall*)(GLsizei n, GLuint* textures);
44  using DeleteTexturesProc = void(__stdcall*)(GLsizei n,
45  const GLuint* textures);
46  using BindTextureProc = void(__stdcall*)(GLenum target, GLuint texture);
47  using TexParameteriProc = void(__stdcall*)(GLenum target,
48  GLenum pname,
49  GLint param);
50  using TexImage2DProc = void(__stdcall*)(GLenum target,
51  GLint level,
52  GLint internalformat,
53  GLsizei width,
54  GLsizei height,
55  GLint border,
56  GLenum format,
57  GLenum type,
58  const void* data);
59 
60  GenTexturesProc gen_textures_;
61  DeleteTexturesProc delete_textures_;
62  BindTextureProc bind_texture_;
63  TexParameteriProc tex_parameteri_;
64  TexImage2DProc tex_image_2d_;
65 
66  FML_DISALLOW_COPY_AND_ASSIGN(ProcTable);
67 };
68 
69 } // namespace egl
70 } // namespace flutter
71 
72 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_PROC_TABLE_H_
flutter::egl::ProcTable::TexImage2D
virtual void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *data) const
Definition: proc_table.cc:54
flutter::egl::ProcTable::ProcTable
ProcTable()
flutter::egl::ProcTable
Definition: proc_table.h:19
type
enum flutter::testing::@87::KeyboardChange::Type type
flutter::egl::ProcTable::GenTextures
virtual void GenTextures(GLsizei n, GLuint *textures) const
Definition: proc_table.cc:38
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::egl::ProcTable::BindTexture
virtual void BindTexture(GLenum target, GLuint texture) const
Definition: proc_table.cc:46
flutter::egl::ProcTable::DeleteTextures
virtual void DeleteTextures(GLsizei n, const GLuint *textures) const
Definition: proc_table.cc:42
flutter::egl::ProcTable::TexParameteri
virtual void TexParameteri(GLenum target, GLenum pname, GLint param) const
Definition: proc_table.cc:50
flutter::egl::ProcTable::Create
static std::shared_ptr< ProcTable > Create()
Definition: proc_table.cc:12
flutter::egl::ProcTable::~ProcTable
virtual ~ProcTable()