HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
contextCaps.h
Go to the documentation of this file.
1
//
2
// Copyright 2018 Pixar
3
//
4
// Licensed under the Apache License, Version 2.0 (the "Apache License")
5
// with the following modification; you may not use this file except in
6
// compliance with the Apache License and the following modification to it:
7
// Section 6. Trademarks. is deleted and replaced with:
8
//
9
// 6. Trademarks. This License does not grant permission to use the trade
10
// names, trademarks, service marks, or product names of the Licensor
11
// and its affiliates, except as required to comply with Section 4(c) of
12
// the License and to reproduce the content of the NOTICE file.
13
//
14
// You may obtain a copy of the Apache License at
15
//
16
// http://www.apache.org/licenses/LICENSE-2.0
17
//
18
// Unless required by applicable law or agreed to in writing, software
19
// distributed under the Apache License with the above modification is
20
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
// KIND, either express or implied. See the Apache License for the specific
22
// language governing permissions and limitations under the Apache License.
23
//
24
#ifndef PXR_IMAGING_GLF_CONTEXT_CAPS_H
25
#define PXR_IMAGING_GLF_CONTEXT_CAPS_H
26
27
#include "
pxr/pxr.h
"
28
#include "
pxr/imaging/glf/api.h
"
29
#include "
pxr/base/tf/singleton.h
"
30
31
32
PXR_NAMESPACE_OPEN_SCOPE
33
34
35
/// \class GlfContextCaps
36
///
37
/// This class is intended to be a cache of the capabilites
38
/// (resource limits and features) of the underlying
39
/// GL context.
40
///
41
/// It serves two purposes. Firstly to reduce driver
42
/// transition overhead of querying these values.
43
/// Secondly to provide access to these values from other
44
/// threads that don't have the context bound.
45
///
46
/// In the event of failure (InitInstance() wasn't called
47
/// or an issue accessing the GL context), a reasonable
48
/// set of defaults, based on GL minimums, is provided.
49
///
50
///
51
/// TO DO (bug #124971):
52
/// - LoadCaps() should be called whenever the context
53
/// changes.
54
/// - Provide a mechanism where other Hd systems can
55
/// subscribe to when the caps changes, so they can
56
/// update and invalidate.
57
///
58
class
GlfContextCaps
59
{
60
public
:
61
62
/// InitInstance queries the GL context for its capabilities.
63
/// It should be called by the application before using systems
64
/// that depend on the caps, such as Hydra. A good example would be
65
/// to pair the call to initialize after a call to initialize GL
66
GLF_API
67
static
void
InitInstance
();
68
69
/// GetInstance() returns the filled capabilities structure.
70
/// This function will not populate the caps and will issue a
71
/// coding error if it hasn't been filled.
72
GLF_API
73
static
const
GlfContextCaps
&
GetInstance
();
74
75
// GL version
76
int
glVersion
;
// 400 (4.0), 410 (4.1), ...
77
78
// Whether or not we are running with core profile
79
bool
coreProfile
;
80
81
// Max constants
82
int
maxArrayTextureLayers
;
83
84
private
:
85
void
_LoadCaps();
86
GlfContextCaps
();
87
~
GlfContextCaps
() =
default
;
88
89
// Disallow copies
90
GlfContextCaps
(
const
GlfContextCaps
&) =
delete
;
91
GlfContextCaps
& operator=(
const
GlfContextCaps
&) =
delete
;
92
93
friend
class
TfSingleton
<
GlfContextCaps
>;
94
};
95
96
GLF_API_TEMPLATE_CLASS
(
TfSingleton<GlfContextCaps>
);
97
98
PXR_NAMESPACE_CLOSE_SCOPE
99
100
#endif // PXR_IMAGING_GLF_CONTEXT_CAPS_H
101
api.h
singleton.h
TfSingleton
Definition:
singleton.h:122
GlfContextCaps::GetInstance
static GLF_API const GlfContextCaps & GetInstance()
GLF_API
#define GLF_API
Definition:
api.h:40
GlfContextCaps::InitInstance
static GLF_API void InitInstance()
GlfContextCaps::glVersion
int glVersion
Definition:
contextCaps.h:76
pxr.h
GLF_API_TEMPLATE_CLASS
GLF_API_TEMPLATE_CLASS(TfSingleton< GlfContextCaps >)
GlfContextCaps
Definition:
contextCaps.h:58
PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition:
path.h:1432
GlfContextCaps::coreProfile
bool coreProfile
Definition:
contextCaps.h:79
PXR_NAMESPACE_CLOSE_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition:
pxr.h:91
GlfContextCaps::maxArrayTextureLayers
int maxArrayTextureLayers
Definition:
contextCaps.h:82
pxr
imaging
glf
contextCaps.h
Generated on Tue Dec 17 2024 03:41:18 for HDK by
1.8.6