All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
texture.h
1 //
2 // Copyright 2016 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_HD_ST_TEXTURE_H
25 #define PXR_IMAGING_HD_ST_TEXTURE_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/imaging/hdSt/api.h"
29 #include "pxr/imaging/hd/version.h"
30 #include "pxr/imaging/hd/texture.h"
31 #include "pxr/imaging/hd/textureResource.h"
32 #include "pxr/imaging/hd/types.h"
33 #include "pxr/imaging/hd/enums.h"
34 
35 #include "pxr/usd/sdf/path.h"
36 
37 #include <boost/shared_ptr.hpp>
38 
39 PXR_NAMESPACE_OPEN_SCOPE
40 
41 
42 class HdSceneDelegate;
43 class HdRenderIndex;
44 
45 typedef boost::shared_ptr<class HdStTextureResource>
46  HdStTextureResourceSharedPtr;
47 typedef boost::shared_ptr<class HdStTextureResourceHandle>
48  HdStTextureResourceHandleSharedPtr;
49 
58 class HdStTexture : public HdTexture {
59 public:
60  HDST_API
61  HdStTexture(SdfPath const & id);
62  HDST_API
63  virtual ~HdStTexture();
64 
67  HDST_API
68  virtual void Sync(HdSceneDelegate *sceneDelegate,
69  HdRenderParam *renderParam,
70  HdDirtyBits *dirtyBits) override;
71 
75  HDST_API
76  virtual HdDirtyBits GetInitialDirtyBitsMask() const override;
77 
78 protected:
79  HdStTextureResourceSharedPtr _GetTextureResource(
80  HdSceneDelegate *sceneDelegate,
81  const SdfPath &sceneId,
82  HdTextureResource::ID texID) const;
83 
84  void _RegisterTextureResource(
85  HdRenderIndex *renderIndex,
86  const SdfPath &textureHandleId,
87  const HdTextureResourceSharedPtr &textureResource);
88 
89 private:
90  // Make sure we have a reference to the texture resource, so its
91  // life time exists at least as long as this object.
92  HdStTextureResourceSharedPtr _textureResource;
93 
94  HdStTextureResourceHandleSharedPtr _textureResourceHandle;
95 };
96 
97 
98 PXR_NAMESPACE_CLOSE_SCOPE
99 
100 #endif //PXR_IMAGING_HD_ST_TEXTURE_H
101 
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Definition: renderIndex.h:117
virtual HDST_API void Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) override
Synchronizes state from the delegate to Hydra, for example, allocating parameters into GPU memory...
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
Represents a Texture Buffer Prim.
Definition: texture.h:40
Adapter class providing data exchange with the client scene graph.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:287
Represents a Texture Buffer Prim.
Definition: texture.h:58
virtual HDST_API HdDirtyBits GetInitialDirtyBitsMask() const override
Returns the minimal set of dirty bits to place in the change tracker for use in the first sync of thi...