OGRE
1.9
Object-Oriented Graphics Rendering Engine
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
OgreGL3PlusHardwarePixelBuffer.h
Go to the documentation of this file.
1
/*
2
-----------------------------------------------------------------------------
3
This source file is part of OGRE
4
(Object-oriented Graphics Rendering Engine)
5
For the latest info, see http://www.ogre3d.org/
6
7
Copyright (c) 2000-2014 Torus Knot Software Ltd
8
9
Permission is hereby granted, free of charge, to any person obtaining a copy
10
of this software and associated documentation files (the "Software"), to deal
11
in the Software without restriction, including without limitation the rights
12
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
copies of the Software, and to permit persons to whom the Software is
14
furnished to do so, subject to the following conditions:
15
16
The above copyright notice and this permission notice shall be included in
17
all copies or substantial portions of the Software.
18
19
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
THE SOFTWARE.
26
-----------------------------------------------------------------------------
27
*/
28
29
#ifndef __GL3PlusHardwarePixelBuffer_H__
30
#define __GL3PlusHardwarePixelBuffer_H__
31
32
#include "
OgreGL3PlusPrerequisites.h
"
33
#include "
OgreHardwarePixelBuffer.h
"
34
35
namespace
Ogre {
36
class
_OgreGL3PlusExport
GL3PlusHardwarePixelBuffer
:
public
HardwarePixelBuffer
37
{
38
protected
:
40
PixelBox
lockImpl(
const
Image::Box
lockBox, LockOptions options);
41
43
void
unlockImpl(
void
);
44
45
// Internal buffer; either on-card or in system memory, freed/allocated on demand
46
// depending on buffer usage
47
PixelBox
mBuffer
;
48
GLenum
mGLInternalFormat
;
// GL internal format
49
LockOptions
mCurrentLockOptions
;
50
51
// Buffer allocation/freeage
52
void
allocateBuffer();
53
54
void
freeBuffer();
55
57
virtual
void
upload(
const
PixelBox
&data,
const
Image::Box
&dest);
58
60
virtual
void
download(
const
PixelBox
&data);
61
62
public
:
64
GL3PlusHardwarePixelBuffer
(
uint32
mWidth,
uint32
mHeight,
uint32
mDepth,
65
PixelFormat
mFormat,
66
HardwareBuffer::Usage
usage);
67
69
void
blitFromMemory(
const
PixelBox
&src,
const
Image::Box
&dstBox);
70
72
void
blitToMemory(
const
Image::Box
&srcBox,
const
PixelBox
&dst);
73
74
~
GL3PlusHardwarePixelBuffer
();
75
78
virtual
void
bindToFramebuffer(GLenum attachment,
uint32
zoffset);
79
GLenum
getGLFormat
() {
return
mGLInternalFormat; }
80
};
81
84
class
_OgreGL3PlusExport
GL3PlusTextureBuffer
:
public
GL3PlusHardwarePixelBuffer
85
{
86
public
:
88
GL3PlusTextureBuffer
(
const
String
&baseName, GLenum target, GLuint
id
, GLint face,
89
GLint level,
Usage
usage,
bool
writeGamma,
uint
fsaa);
90
~
GL3PlusTextureBuffer
();
91
93
virtual
void
bindToFramebuffer(GLenum attachment,
uint32
zoffset);
94
96
RenderTexture
* getRenderTarget(
size_t
);
97
99
virtual
void
upload(
const
PixelBox
&data,
const
Image::Box
&dest);
100
102
virtual
void
download(
const
PixelBox
&data);
103
105
virtual
void
blitFromMemory(
const
PixelBox
&src_orig,
const
Image::Box
&dstBox);
106
108
void
_clearSliceRTT
(
size_t
zoffset)
109
{
110
mSliceTRT[zoffset] = 0;
111
}
112
114
void
copyFromFramebuffer(
uint32
zoffset);
115
117
void
blit(
const
HardwarePixelBufferSharedPtr
&src,
const
Image::Box
&srcBox,
const
Image::Box
&dstBox);
118
// Blitting implementation
119
void
blitFromTexture(
GL3PlusTextureBuffer
*src,
const
Image::Box
&srcBox,
const
Image::Box
&dstBox);
120
protected
:
121
// In case this is a texture level
122
GLenum
mTarget
;
123
GLenum
mFaceTarget
;
// same as mTarget in case of GL_TEXTURE_xD, but cubemap face for cubemaps
124
GLuint
mTextureID
;
125
GLuint
mBufferId
;
126
GLint
mFace
;
127
GLint
mLevel
;
128
129
typedef
vector<RenderTexture*>::type
SliceTRT
;
130
SliceTRT
mSliceTRT
;
131
};
132
135
class
_OgreGL3PlusExport
GL3PlusRenderBuffer
:
public
GL3PlusHardwarePixelBuffer
136
{
137
public
:
138
GL3PlusRenderBuffer
(GLenum format,
uint32
width,
uint32
height, GLsizei numSamples);
139
~
GL3PlusRenderBuffer
();
140
142
virtual
void
bindToFramebuffer(GLenum attachment,
uint32
zoffset);
143
144
protected
:
145
// In case this is a render buffer
146
GLuint
mRenderbufferID
;
147
};
148
}
149
150
#endif
Ogre::GL3PlusTextureBuffer::_clearSliceRTT
void _clearSliceRTT(size_t zoffset)
Notify TextureBuffer of destruction of render target.
Definition:
OgreGL3PlusHardwarePixelBuffer.h:108
Ogre::GL3PlusTextureBuffer::mBufferId
GLuint mBufferId
Definition:
OgreGL3PlusHardwarePixelBuffer.h:125
Ogre::uint32
unsigned int uint32
Definition:
OgrePlatform.h:344
Ogre::GL3PlusHardwarePixelBuffer
Definition:
OgreGL3PlusHardwarePixelBuffer.h:36
Ogre::GL3PlusTextureBuffer::SliceTRT
vector< RenderTexture * >::type SliceTRT
Definition:
OgreGL3PlusHardwarePixelBuffer.h:129
Ogre::GL3PlusTextureBuffer
Texture surface.
Definition:
OgreGL3PlusHardwarePixelBuffer.h:84
Ogre::RenderTexture
This class represents a RenderTarget that renders to a Texture.
Definition:
OgreRenderTexture.h:48
Ogre::GL3PlusTextureBuffer::mTarget
GLenum mTarget
Definition:
OgreGL3PlusHardwarePixelBuffer.h:122
OgreHardwarePixelBuffer.h
Ogre::GL3PlusHardwarePixelBuffer::getGLFormat
GLenum getGLFormat()
Definition:
OgreGL3PlusHardwarePixelBuffer.h:79
Ogre::GL3PlusRenderBuffer
Renderbuffer surface.
Definition:
OgreGL3PlusHardwarePixelBuffer.h:135
Ogre::GL3PlusTextureBuffer::mFaceTarget
GLenum mFaceTarget
Definition:
OgreGL3PlusHardwarePixelBuffer.h:123
Ogre::Box
Structure used to define a box in a 3-D integer space.
Definition:
OgreCommon.h:659
Ogre::GL3PlusHardwarePixelBuffer::mGLInternalFormat
GLenum mGLInternalFormat
Definition:
OgreGL3PlusHardwarePixelBuffer.h:48
Ogre::GL3PlusRenderBuffer::mRenderbufferID
GLuint mRenderbufferID
Definition:
OgreGL3PlusHardwarePixelBuffer.h:146
Ogre::GL3PlusTextureBuffer::mSliceTRT
SliceTRT mSliceTRT
Definition:
OgreGL3PlusHardwarePixelBuffer.h:130
Ogre::PixelFormat
PixelFormat
The pixel format used for images, textures, and render surfaces.
Definition:
OgrePixelFormat.h:43
Ogre::vector
Definition:
OgrePrerequisites.h:494
Ogre::GL3PlusTextureBuffer::mLevel
GLint mLevel
Definition:
OgreGL3PlusHardwarePixelBuffer.h:127
Ogre::HardwareBuffer::Usage
Usage
Enums describing buffer usage; not mutually exclusive.
Definition:
OgreHardwareBuffer.h:79
Ogre::GL3PlusTextureBuffer::mFace
GLint mFace
Definition:
OgreGL3PlusHardwarePixelBuffer.h:126
Ogre::GL3PlusTextureBuffer::mTextureID
GLuint mTextureID
Definition:
OgreGL3PlusHardwarePixelBuffer.h:124
Ogre::GL3PlusHardwarePixelBuffer::mBuffer
PixelBox mBuffer
Definition:
OgreGL3PlusHardwarePixelBuffer.h:47
Ogre::HardwarePixelBufferSharedPtr
Shared pointer implementation used to share pixel buffers.
Definition:
OgreHardwarePixelBuffer.h:193
Ogre::HardwarePixelBuffer
Specialisation of HardwareBuffer for a pixel buffer.
Definition:
OgreHardwarePixelBuffer.h:53
_OgreGL3PlusExport
#define _OgreGL3PlusExport
Definition:
OgreGL3PlusPrerequisites.h:91
OgreGL3PlusPrerequisites.h
Ogre::String
_StringBase String
Definition:
OgrePrerequisites.h:442
Ogre::PixelBox
A primitive describing a volume (3D), image (2D) or line (1D) of pixels in memory.
Definition:
OgrePixelFormat.h:304
Ogre::GL3PlusHardwarePixelBuffer::mCurrentLockOptions
LockOptions mCurrentLockOptions
Definition:
OgreGL3PlusHardwarePixelBuffer.h:49
Ogre::uint
unsigned int uint
Definition:
OgrePrerequisites.h:114
RenderSystems
GL3Plus
include
OgreGL3PlusHardwarePixelBuffer.h
Generated on Fri Jun 20 2014 00:37:32 for OGRE by
1.8.7