Ocean
Loading...
Searching...
No Matches
rendering/TextureFramebuffer.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_RENDERING_TEXTURE_FRAMEBUFFER_H
9#define META_OCEAN_RENDERING_TEXTURE_FRAMEBUFFER_H
10
13
14#include "ocean/base/Frame.h"
15
17
18namespace Ocean
19{
20
21namespace Rendering
22{
23
24// Forward declaration
25class TextureFramebuffer;
26
27/**
28 * Definition of a smart object reference holding a texture framebuffer.
29 * @see SmartObjectRef, TextureFramebuffer.
30 * @ingroup rendering
31 */
33
34/**
35 * This class is the base class for all textures based on a framebuffer.
36 * @ingroup rendering
37 */
38class OCEAN_RENDERING_EXPORT TextureFramebuffer : virtual public Texture
39{
40 public:
41
42 /**
43 * Resizes the texture framebuffer.
44 * @param width The width of the framebuffer in pixel, with range [1, infinity)
45 * @param height The height of the framebuffer in pixel, with range [1, infinity)
46 */
47 virtual bool resize(const unsigned int width, const unsigned int height) = 0;
48
49 /**
50 * Returns the texture framebuffer's internal pixel format.
51 * @return The pixel format of the texture framebuffer
52 */
54
55 /**
56 * Returns the texture wrap type in s direction.
57 * The default is WRAP_CLAMP.
58 * @return Wrap type in s direction
59 * @exception NotSupportedException Is thrown if this function is not supported
60 * @see setWrapTypeS(), wrapTypeT().
61 */
62 virtual WrapType wrapTypeS() const;
63
64 /**
65 * Returns the texture wrap type in t direction.
66 * The default is WRAP_CLAMP.
67 * @return Wrap type in t direction
68 * @exception NotSupportedException Is thrown if this function is not supported
69 * @see setWrapTypeT(), wrapTypeS().
70 */
71 virtual WrapType wrapTypeT() const;
72
73 /**
74 * Sets the texture framebuffer's internal pixel format.
75 * @param pixelFormat The pixel format of the texture framebuffer
76 * @return True, if succeeded
77 */
78 virtual bool setPixelFormat(const FrameType::PixelFormat pixelFormat) = 0;
79
80 /**
81 * Sets the texture wrap type in s direction.
82 * @param type Wrap type to set
83 * @return True, if succeeded
84 * @exception NotSupportedException Is thrown if this function is not supported
85 * @see wrapTypeS(), setWrapTypeT().
86 */
87 virtual bool setWrapTypeS(const WrapType type);
88
89 /**
90 * Sets the texture wrap type in t direction.
91 * @param type Wrap type to set
92 * @return True, if succeeded
93 * @exception NotSupportedException Is thrown if this function is not supported
94 * @see wrapTypeT(), setWrapTypeS().
95 */
96 virtual bool setWrapTypeT(const WrapType type);
97
98 /**
99 * Copies the image content of the color texture to a given frame.
100 * @param frame The frame to which the color texture will be copied, the frame will be adjusted if the pixel format does match
101 * @param subRegion Optional sub-region within the framebuffer to copy; an invalid bounding box to copy the entire framebuffer
102 * @return True, if succeeded
103 */
104 virtual bool copyColorTextureToFrame(Frame& frame, const CV::PixelBoundingBox& subRegion = CV::PixelBoundingBox());
105
106 /**
107 * Copies the image content of the depth texture to a given frame.
108 * @param frame The frame to which the depth texture will be copied, the frame will be adjusted if the pixel format does match
109 * @param subRegion Optional sub-region within the framebuffer to copy; an invalid bounding box to copy the entire framebuffer
110 * @return True, if succeeded
111 */
112 virtual bool copyDepthTextureToFrame(Frame& frame, const CV::PixelBoundingBox& subRegion = CV::PixelBoundingBox());
113
114 /**
115 * Returns the type of this object.
116 * @see Object::type().
117 */
118 inline ObjectType type() const override;
119
120 protected:
121
122 /**
123 * Creates a new texture object.
124 */
126
127 /**
128 * Destructs a texture object.
129 */
131};
132
137
138}
139
140}
141
142#endif // META_OCEAN_RENDERING_TEXTURE_FRAMEBUFFER_H
This class implements Ocean's image class.
Definition Frame.h:1808
PixelFormat
Definition of all pixel formats available in the Ocean framework.
Definition Frame.h:183
ObjectType
Definition of different object type.
Definition Object.h:63
@ TYPE_TEXTURE_FRAMEBUFFER
TextureFramebuffer type.
Definition Object.h:163
This class implements a smart rendering object reference.
Definition rendering/ObjectRef.h:34
This class is the base class for all textures based on a framebuffer.
Definition rendering/TextureFramebuffer.h:39
TextureFramebuffer()=default
Creates a new texture object.
virtual bool setWrapTypeS(const WrapType type)
Sets the texture wrap type in s direction.
virtual FrameType::PixelFormat pixelFormat() const =0
Returns the texture framebuffer's internal pixel format.
virtual WrapType wrapTypeS() const
Returns the texture wrap type in s direction.
virtual bool resize(const unsigned int width, const unsigned int height)=0
Resizes the texture framebuffer.
~TextureFramebuffer() override
Destructs a texture object.
virtual bool copyDepthTextureToFrame(Frame &frame, const CV::PixelBoundingBox &subRegion=CV::PixelBoundingBox())
Copies the image content of the depth texture to a given frame.
ObjectType type() const override
Returns the type of this object.
Definition rendering/TextureFramebuffer.h:133
virtual bool copyColorTextureToFrame(Frame &frame, const CV::PixelBoundingBox &subRegion=CV::PixelBoundingBox())
Copies the image content of the color texture to a given frame.
virtual bool setPixelFormat(const FrameType::PixelFormat pixelFormat)=0
Sets the texture framebuffer's internal pixel format.
virtual bool setWrapTypeT(const WrapType type)
Sets the texture wrap type in t direction.
virtual WrapType wrapTypeT() const
Returns the texture wrap type in t direction.
This class is the base class for all textures.
Definition rendering/Texture.h:38
WrapType
Definition of different texture wrapping types.
Definition rendering/Texture.h:96
SmartObjectRef< TextureFramebuffer > TextureFramebufferRef
Definition of a smart object reference holding a texture framebuffer.
Definition rendering/TextureFramebuffer.h:32
The namespace covering the entire Ocean framework.
Definition Accessor.h:15