1 // Copyright (C) 2002-2012 Nikolaus Gebhardt / Thomas Alten
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #include "IrrCompileConfig.h"
\r
6 #include "SoftwareDriver2_compile_config.h"
\r
7 #include "CDepthBuffer.h"
\r
9 #ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
18 CDepthBuffer::CDepthBuffer(const core::dimension2d<u32>& size)
\r
19 : Buffer(0), Size(0,0)
\r
22 setDebugName("CDepthBuffer");
\r
31 CDepthBuffer::~CDepthBuffer()
\r
42 //! clears the zbuffer
\r
43 void CDepthBuffer::clear(f32 value, interlaced_control interlaced)
\r
47 #ifdef SOFTWARE_DRIVER_2_USE_WBUFFER
\r
48 zMaxValue.f = 1.f-value;
\r
50 zMaxValue.f = value;
\r
53 memset32_interlaced(Buffer, zMaxValue.u, Pitch, Size.Height, interlaced);
\r
58 //! sets the new size of the buffer
\r
59 void CDepthBuffer::setSize(const core::dimension2d<u32>& size)
\r
68 Pitch = size.Width * sizeof ( fp24 );
\r
69 size_t TotalSize = Pitch * size.Height;
\r
70 Buffer = new u8[align_next(TotalSize,16)];
\r
72 clear( 1.f, interlace_disabled());
\r
77 //! returns the size of the buffer
\r
78 const core::dimension2d<u32>& CDepthBuffer::getSize() const
\r
83 // -----------------------------------------------------------------
\r
86 CStencilBuffer::CStencilBuffer(const core::dimension2d<u32>& size, unsigned bit)
\r
87 : Buffer(0), Size(0,0),Bit(bit)
\r
90 setDebugName("CStencilBuffer");
\r
99 CStencilBuffer::~CStencilBuffer()
\r
110 //! clears the buffer
\r
111 void CStencilBuffer::clear(u32 value, const interlaced_control interlaced)
\r
119 memset32_interlaced ( Buffer, set, Pitch,Size.Height,interlaced );
\r
124 //! sets the new size of the buffer
\r
125 void CStencilBuffer::setSize(const core::dimension2d<u32>& size)
\r
134 Pitch = size.Width * sizeof (tStencilSample);
\r
135 size_t TotalSize = Pitch * size.Height;
\r
136 Buffer = new u8[align_next(TotalSize,16)];
\r
138 clear(0, interlace_disabled());
\r
143 //! returns the size of the buffer
\r
144 const core::dimension2d<u32>& CStencilBuffer::getSize() const
\r
151 } // end namespace video
\r
152 } // end namespace irr
\r
154 #endif // _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
161 //! creates a ZBuffer
\r
162 IDepthBuffer* createDepthBuffer(const core::dimension2d<u32>& size)
\r
164 #ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
165 return new CDepthBuffer(size);
\r
168 #endif // _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
172 //! creates a Stencil Buffer
\r
173 IStencilBuffer* createStencilBuffer(const core::dimension2d<u32>& size, u32 bit)
\r
175 #ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
176 return new CStencilBuffer(size,bit);
\r
179 #endif // _IRR_COMPILE_WITH_BURNINGSVIDEO_
\r
182 } // end namespace video
\r
183 } // end namespace irr
\r