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
hgiInterop.h
Go to the documentation of this file.
1
//
2
// Copyright 2020 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_HGIINTEROP_HGIINTEROP_H
25
#define PXR_IMAGING_HGIINTEROP_HGIINTEROP_H
26
27
#include "
pxr/pxr.h
"
28
#include "
pxr/base/tf/token.h
"
29
#include "
pxr/base/gf/vec4i.h
"
30
#include "
pxr/imaging/hgiInterop/api.h
"
31
#include "
pxr/imaging/hgi/texture.h
"
32
33
#include <memory>
34
35
PXR_NAMESPACE_OPEN_SCOPE
36
37
class
Hgi
;
38
class
VtValue
;
39
40
struct
HgiInteropImpl;
41
42
/// \class HgiInterop
43
///
44
/// Hydra Graphics Interface Interop.
45
///
46
/// HgiInterop provides functionality to transfer render targets between
47
/// supported APIs as efficiently as possible.
48
///
49
class
HgiInterop
final
50
{
51
public
:
52
HGIINTEROP_API
53
HgiInterop
();
54
55
HGIINTEROP_API
56
~HgiInterop
();
57
58
/// Composite the provided textures over the application / viewer's
59
/// framebuffer contents.
60
/// `srcHgi`:
61
/// Determines the source format/platform of the textures.
62
/// Eg. if hgi is of type HgiMetal, the textures are HgiMetalTexture.
63
/// `srcColor`: is the source color aov texture to composite to screen.
64
/// `srcDepth`: (optional) is the depth aov texture to composite to screen.
65
/// `dstApi`:
66
/// Determines what target format/platform the application is using.
67
/// E.g. If hgi==HgiMetal and dstApi==OpenGL then TransferToApp
68
/// will present the metal textures to the gl application.
69
/// `dstFramebuffer`:
70
/// The framebuffer that the source textures are presented into. This
71
/// is a VtValue that encoding a framebuffer in a dstApi specific way.
72
/// E.g., a uint32_t (aka GLuint) for framebuffer object for
73
/// dstApi==OpenGL. For backwards compatibility, the currently bound
74
/// framebuffer is used when the VtValue is empty.
75
///
76
/// `dstRegion`:
77
/// Subrect region of the framebuffer over which to composite.
78
/// Coordinates are (left, BOTTOM, width, height) which is the same
79
/// convention as OpenGL viewport coordinates.
80
///
81
/// Note:
82
/// To composite correctly, blending is enabled.
83
/// If `srcDepth` is provided, depth testing is enabled.
84
/// As a result, the contents of the application framebuffer matter.
85
/// In order to use the contents of `srcColor` and `srcDepth` as-is
86
/// (i.e., blit), the color attachment should be cleared to (0,0,0,0) and
87
/// the depth attachment needs to be cleared to 1.
88
///
89
HGIINTEROP_API
90
void
TransferToApp
(
91
Hgi
*srcHgi,
92
HgiTextureHandle
const
&srcColor,
93
HgiTextureHandle
const
&
srcDepth
,
94
TfToken
const
&dstApi,
95
VtValue
const
&dstFramebuffer,
96
GfVec4i
const
&dstRegion);
97
98
private
:
99
HgiInterop & operator=(
const
HgiInterop&) =
delete
;
100
HgiInterop
(
const
HgiInterop&) =
delete
;
101
102
std::unique_ptr<HgiInteropImpl> _hgiInteropImpl;
103
};
104
105
106
PXR_NAMESPACE_CLOSE_SCOPE
107
108
#endif
GfVec4i
Definition:
vec4i.h:60
HGIINTEROP_API
#define HGIINTEROP_API
Definition:
api.h:40
api.h
HgiTextureHandle
int HgiHandle< class HgiTexture > HgiTextureHandle
Definition:
ptexTextureObject.h:53
TfToken
Definition:
token.h:87
vec4i.h
pxr.h
texture.h
HgiInterop::TransferToApp
HGIINTEROP_API void TransferToApp(Hgi *srcHgi, HgiTextureHandle const &srcColor, HgiTextureHandle const &srcDepth, TfToken const &dstApi, VtValue const &dstFramebuffer, GfVec4i const &dstRegion)
srcDepth
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei GLsizei GLsizei srcDepth
Definition:
glcorearb.h:2510
Hgi
Definition:
hgi.h:110
PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition:
path.h:1432
HgiInterop::~HgiInterop
HGIINTEROP_API ~HgiInterop()
HgiInterop
Definition:
hgiInterop.h:49
HgiInterop::HgiInterop
HGIINTEROP_API HgiInterop()
PXR_NAMESPACE_CLOSE_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition:
pxr.h:91
VtValue
Definition:
value.h:164
token.h
pxr
imaging
hgiInterop
hgiInterop.h
Generated on Tue Apr 1 2025 02:51:21 for HDK by
1.8.6