OGRE
1.8
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
OgreGLHardwarePixelBuffer.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-2013 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
#ifndef __GLPIXELBUFFER_H__
29
#define __GLPIXELBUFFER_H__
30
31
#include "
OgreGLPrerequisites.h
"
32
#include "
OgreHardwarePixelBuffer.h
"
33
34
namespace
Ogre {
35
class
_OgreGLExport
GLHardwarePixelBuffer
:
public
HardwarePixelBuffer
36
{
37
protected
:
39
PixelBox
lockImpl(
const
Image::Box
lockBox,
LockOptions
options);
40
42
void
unlockImpl(
void
);
43
44
// Internal buffer; either on-card or in system memory, freed/allocated on demand
45
// depending on buffer usage
46
PixelBox
mBuffer
;
47
GLenum
mGLInternalFormat
;
// GL internal format
48
LockOptions
mCurrentLockOptions
;
49
50
// Buffer allocation/freeage
51
void
allocateBuffer();
52
void
freeBuffer();
53
// Upload a box of pixels to this buffer on the card
54
virtual
void
upload(
const
PixelBox
&data,
const
Image::Box
&dest);
55
// Download a box of pixels from the card
56
virtual
void
download(
const
PixelBox
&data);
57
public
:
59
GLHardwarePixelBuffer
(
size_t
mWidth,
size_t
mHeight,
size_t
mDepth,
60
PixelFormat
mFormat,
61
HardwareBuffer::Usage
usage);
62
64
void
blitFromMemory(
const
PixelBox
&src,
const
Image::Box
&dstBox);
65
67
void
blitToMemory(
const
Image::Box
&srcBox,
const
PixelBox
&dst);
68
69
~
GLHardwarePixelBuffer
();
70
73
virtual
void
bindToFramebuffer(GLenum attachment,
size_t
zoffset);
74
GLenum
getGLFormat
() {
return
mGLInternalFormat; }
75
};
76
79
class
_OgreGLExport
GLTextureBuffer
:
public
GLHardwarePixelBuffer
80
{
81
public
:
83
GLTextureBuffer
(
const
String
&baseName, GLenum target, GLuint
id
, GLint face,
84
GLint level,
Usage
usage,
bool
softwareMipmap,
bool
writeGamma,
uint
fsaa);
85
~
GLTextureBuffer
();
86
88
virtual
void
bindToFramebuffer(GLenum attachment,
size_t
zoffset);
90
RenderTexture
* getRenderTarget(
size_t
);
92
virtual
void
upload(
const
PixelBox
&data,
const
Image::Box
&dest);
94
virtual
void
download(
const
PixelBox
&data);
95
97
virtual
void
blitFromMemory(
const
PixelBox
&src_orig,
const
Image::Box
&dstBox);
98
100
void
_clearSliceRTT
(
size_t
zoffset)
101
{
102
mSliceTRT[zoffset] = 0;
103
}
105
void
copyFromFramebuffer(
size_t
zoffset);
107
void
blit(
const
HardwarePixelBufferSharedPtr
&src,
const
Image::Box
&srcBox,
const
Image::Box
&dstBox);
108
// Blitting implementation
109
void
blitFromTexture(
GLTextureBuffer
*src,
const
Image::Box
&srcBox,
const
Image::Box
&dstBox);
110
protected
:
111
// In case this is a texture level
112
GLenum
mTarget
;
113
GLenum
mFaceTarget
;
// same as mTarget in case of GL_TEXTURE_xD, but cubemap face for cubemaps
114
GLuint
mTextureID
;
115
GLint
mFace
;
116
GLint
mLevel
;
117
bool
mSoftwareMipmap
;
// Use GLU for mip mapping
118
bool
mHwGamma
;
119
120
typedef
vector<RenderTexture*>::type
SliceTRT
;
121
SliceTRT
mSliceTRT
;
122
};
125
class
_OgreGLExport
GLRenderBuffer
:
public
GLHardwarePixelBuffer
126
{
127
public
:
128
GLRenderBuffer
(GLenum format,
size_t
width,
size_t
height, GLsizei numSamples);
129
~
GLRenderBuffer
();
130
132
virtual
void
bindToFramebuffer(GLenum attachment,
size_t
zoffset);
133
protected
:
134
// In case this is a render buffer
135
GLuint
mRenderbufferID
;
136
};
137
}
138
139
#endif
Ogre::GLTextureBuffer::mFace
GLint mFace
Definition:
OgreGLHardwarePixelBuffer.h:115
Ogre::GLHardwarePixelBuffer::getGLFormat
GLenum getGLFormat()
Definition:
OgreGLHardwarePixelBuffer.h:74
Ogre::GLTextureBuffer::mLevel
GLint mLevel
Definition:
OgreGLHardwarePixelBuffer.h:116
Ogre::RenderTexture
This class represents a RenderTarget that renders to a Texture.
Definition:
OgreRenderTexture.h:48
Ogre::GLTextureBuffer::mHwGamma
bool mHwGamma
Definition:
OgreGLHardwarePixelBuffer.h:118
Ogre::GLHardwarePixelBuffer
Definition:
OgreGLHardwarePixelBuffer.h:35
Ogre::GLHardwarePixelBuffer::mCurrentLockOptions
LockOptions mCurrentLockOptions
Definition:
OgreGLHardwarePixelBuffer.h:48
OgreHardwarePixelBuffer.h
Ogre::GLTextureBuffer::SliceTRT
vector< RenderTexture * >::type SliceTRT
Definition:
OgreGLHardwarePixelBuffer.h:120
_OgreGLExport
#define _OgreGLExport
Definition:
OgreGLPrerequisites.h:96
Ogre::GLTextureBuffer::mSliceTRT
SliceTRT mSliceTRT
Definition:
OgreGLHardwarePixelBuffer.h:121
Ogre::GLTextureBuffer::mTarget
GLenum mTarget
Definition:
OgreGLHardwarePixelBuffer.h:112
Ogre::GLTextureBuffer::mTextureID
GLuint mTextureID
Definition:
OgreGLHardwarePixelBuffer.h:114
Ogre::HardwareBuffer::LockOptions
LockOptions
Locking options.
Definition:
OgreHardwareBuffer.h:121
Ogre::GLHardwarePixelBuffer::mGLInternalFormat
GLenum mGLInternalFormat
Definition:
OgreGLHardwarePixelBuffer.h:47
Ogre::Box
Structure used to define a box in a 3-D integer space.
Definition:
OgreCommon.h:662
Ogre::GLHardwarePixelBuffer::mBuffer
PixelBox mBuffer
Definition:
OgreGLHardwarePixelBuffer.h:46
Ogre::PixelFormat
PixelFormat
The pixel format used for images, textures, and render surfaces.
Definition:
OgrePixelFormat.h:43
Ogre::vector
Definition:
OgrePrerequisites.h:490
Ogre::GLRenderBuffer
Renderbuffer surface.
Definition:
OgreGLHardwarePixelBuffer.h:125
Ogre::HardwareBuffer::Usage
Usage
Enums describing buffer usage; not mutually exclusive.
Definition:
OgreHardwareBuffer.h:79
Ogre::HardwarePixelBufferSharedPtr
Shared pointer implementation used to share pixel buffers.
Definition:
OgreHardwarePixelBuffer.h:196
Ogre::HardwarePixelBuffer
Specialisation of HardwareBuffer for a pixel buffer.
Definition:
OgreHardwarePixelBuffer.h:53
Ogre::GLTextureBuffer::_clearSliceRTT
void _clearSliceRTT(size_t zoffset)
Notify TextureBuffer of destruction of render target.
Definition:
OgreGLHardwarePixelBuffer.h:100
Ogre::GLTextureBuffer
Texture surface.
Definition:
OgreGLHardwarePixelBuffer.h:79
Ogre::String
_StringBase String
Definition:
OgrePrerequisites.h:466
OgreGLPrerequisites.h
Ogre::GLTextureBuffer::mFaceTarget
GLenum mFaceTarget
Definition:
OgreGLHardwarePixelBuffer.h:113
Ogre::PixelBox
A primitive describing a volume (3D), image (2D) or line (1D) of pixels in memory.
Definition:
OgrePixelFormat.h:198
Ogre::GLTextureBuffer::mSoftwareMipmap
bool mSoftwareMipmap
Definition:
OgreGLHardwarePixelBuffer.h:117
Ogre::GLRenderBuffer::mRenderbufferID
GLuint mRenderbufferID
Definition:
OgreGLHardwarePixelBuffer.h:135
Ogre::uint
unsigned int uint
Definition:
OgrePrerequisites.h:119
RenderSystems
GL
include
OgreGLHardwarePixelBuffer.h
Generated on Fri Jun 20 2014 00:48:10 for OGRE by
1.8.7