| Flutter Impeller |

Public Types | Public Member Functions | Public Attributes | List of all members
impeller::GLProc< T > Struct Template Reference

`#include <proc_table_gles.h>`

## Public Types
using | GLFunctionType = T

## Public Member Functions
template<class... Args>
auto | operator() (Args &&... args) const
| Call the GL function with the appropriate parameters. Lookup the documentation for the GL function being called to understand the arguments and return types. The arguments types must match and will be type checked. More...
constexpr bool | IsAvailable () const
void | Reset ()

## Public Attributes
std::string_view | name = {}
GLFunctionType * | function = nullptr
PFNGLGETERRORPROC | error_fn = nullptr
bool | log_calls = false

## Detailed Description

### template<class T>
struct impeller::GLProc< T >

Definition at line 92 of file proc_table_gles.h.

## Member Typedef Documentation

## ◆ GLFunctionType

template<class T >

using impeller::GLProc< T >::GLFunctionType = T

Definition at line 93 of file proc_table_gles.h.

## Member Function Documentation

## ◆ IsAvailable()

template<class T >

constexpr bool impeller::GLProc< T >::IsAvailable | ( |  | ) | const
| inline constexpr

Definition at line 141 of file proc_table_gles.h.

141 { return function != nullptr; }

Referenced by impeller::GLProc< T >::operator()().

## ◆ operator()()

template<class T >
template<class... Args>

auto impeller::GLProc< T >::operator() | ( | Args &&... | args | ) | const
| inline

Call the GL function with the appropriate parameters. Lookup the documentation for the GL function being called to understand the arguments and return types. The arguments types must match and will be type checked.

Definition at line 126 of file proc_table_gles.h.

126 {
127 #if defined(IMPELLER_DEBUG) && !defined(NDEBUG)
128 AutoErrorCheck error(error_fn, name);
129 // We check for the existence of extensions, and reset the function pointer
130 // but it's still called unconditionally below, and will segfault. This
131 // validation log will at least give us a hint as to what's going on.
132 FML_CHECK(IsAvailable()) << "GL function " << name << " is not available. "
133 << "This is likely due to a missing extension.";
134 if (log_calls) {
135 FML_LOG(IMPORTANT) << name << BuildGLArguments(args...);
136 }
137 #endif // defined(IMPELLER_DEBUG) && !defined(NDEBUG)
138 return function(std::forward<Args>(args)...);
139 }
impeller::BuildGLArguments
std::string BuildGLArguments(Type... args)
Definition: proc_table_gles.h:83
impeller::GLProc::log_calls
bool log_calls
Definition: proc_table_gles.h:117
impeller::GLProc::IsAvailable
constexpr bool IsAvailable() const
Definition: proc_table_gles.h:141
impeller::GLProc::name
std::string_view name
Definition: proc_table_gles.h:98
impeller::GLProc::error_fn
PFNGLGETERRORPROC error_fn
Definition: proc_table_gles.h:109

References impeller::BuildGLArguments(), impeller::GLProc< T >::error_fn, impeller::GLProc< T >::IsAvailable(), impeller::GLProc< T >::log_calls, and impeller::GLProc< T >::name.

## ◆ Reset()

template<class T >

void impeller::GLProc< T >::Reset | ( |  | ) |
| inline

Definition at line 143 of file proc_table_gles.h.

143 {
144 function = nullptr;
145 error_fn = nullptr;
146 }

References impeller::GLProc< T >::error_fn.

## Member Data Documentation

## ◆ error_fn

template<class T >

PFNGLGETERRORPROC impeller::GLProc< T >::error_fn = nullptr

An optional error function. If present, all calls will be followed by an error check.

Definition at line 109 of file proc_table_gles.h.

Referenced by impeller::GLProc< T >::operator()(), and impeller::GLProc< T >::Reset().

## ◆ function

template<class T >

GLFunctionType* impeller::GLProc< T >::function = nullptr

The pointer to the GL function.

Definition at line 103 of file proc_table_gles.h.

## ◆ log_calls

template<class T >

bool impeller::GLProc< T >::log_calls = false

Whether the OpenGL call and its arguments should be logged.

Only works in IMPELLER_DEBUG and for environments where traditional tracing is hard. Expect log spam and only use during development.

Definition at line 117 of file proc_table_gles.h.

Referenced by impeller::GLProc< T >::operator()().

## ◆ name

template<class T >

std::string_view impeller::GLProc< T >::name = {}

The name of the GL function.

Definition at line 98 of file proc_table_gles.h.

Referenced by impeller::GLProc< T >::operator()().

The documentation for this struct was generated from the following file:

- impeller/renderer/backend/gles/proc_table_gles.h