00001 /* 00002 ----------------------------------------------------------------------------- 00003 This source file is part of OGRE 00004 (Object-oriented Graphics Rendering Engine) 00005 For the latest info, see http://www.ogre3d.org/ 00006 00007 Copyright (c) 2000-2012 Torus Knot Software Ltd 00008 00009 Permission is hereby granted, free of charge, to any person obtaining a copy 00010 of this software and associated documentation files (the "Software"), to deal 00011 in the Software without restriction, including without limitation the rights 00012 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00013 copies of the Software, and to permit persons to whom the Software is 00014 furnished to do so, subject to the following conditions: 00015 00016 The above copyright notice and this permission notice shall be included in 00017 all copies or substantial portions of the Software. 00018 00019 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00020 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00021 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00022 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00023 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00024 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00025 THE SOFTWARE. 00026 ----------------------------------------------------------------------------- 00027 */ 00028 00029 #ifndef __GLES2DefaultHardwareBufferManager_H__ 00030 #define __GLES2DefaultHardwareBufferManager_H__ 00031 00032 #include "OgreGLES2Prerequisites.h" 00033 #include "OgreHardwareBufferManager.h" 00034 #include "OgreHardwareVertexBuffer.h" 00035 #include "OgreHardwareIndexBuffer.h" 00036 00037 namespace Ogre { 00039 class _OgreGLES2Export GLES2DefaultHardwareVertexBuffer : public HardwareVertexBuffer 00040 { 00041 protected: 00042 unsigned char* mData; 00044 void* lockImpl(size_t offset, size_t length, LockOptions options); 00046 void unlockImpl(void); 00047 00048 public: 00049 GLES2DefaultHardwareVertexBuffer(size_t vertexSize, size_t numVertices, 00050 HardwareBuffer::Usage usage); 00051 GLES2DefaultHardwareVertexBuffer(HardwareBufferManagerBase* mgr, size_t vertexSize, size_t numVertices, 00052 HardwareBuffer::Usage usage); 00053 virtual ~GLES2DefaultHardwareVertexBuffer(); 00055 void readData(size_t offset, size_t length, void* pDest); 00057 void writeData(size_t offset, size_t length, const void* pSource, 00058 bool discardWholeBuffer = false); 00060 void* lock(size_t offset, size_t length, LockOptions options); 00062 void unlock(void); 00063 00064 void* getDataPtr(size_t offset) const { return (void*)(mData + offset); } 00065 }; 00066 00068 class _OgreGLES2Export GLES2DefaultHardwareIndexBuffer : public HardwareIndexBuffer 00069 { 00070 protected: 00071 unsigned char* mData; 00073 void* lockImpl(size_t offset, size_t length, LockOptions options); 00075 void unlockImpl(void); 00076 00077 public: 00078 GLES2DefaultHardwareIndexBuffer(IndexType idxType, size_t numIndexes, HardwareBuffer::Usage usage); 00079 virtual ~GLES2DefaultHardwareIndexBuffer(); 00081 void readData(size_t offset, size_t length, void* pDest); 00083 void writeData(size_t offset, size_t length, const void* pSource, 00084 bool discardWholeBuffer = false); 00086 void* lock(size_t offset, size_t length, LockOptions options); 00088 void unlock(void); 00089 00090 void* getDataPtr(size_t offset) const { return (void*)(mData + offset); } 00091 }; 00092 00100 class _OgreGLES2Export GLES2DefaultHardwareBufferManagerBase : public HardwareBufferManagerBase 00101 { 00102 public: 00103 GLES2DefaultHardwareBufferManagerBase(); 00104 virtual ~GLES2DefaultHardwareBufferManagerBase(); 00106 HardwareVertexBufferSharedPtr 00107 createVertexBuffer(size_t vertexSize, size_t numVerts, 00108 HardwareBuffer::Usage usage, bool useShadowBuffer = false); 00110 HardwareIndexBufferSharedPtr 00111 createIndexBuffer(HardwareIndexBuffer::IndexType itype, size_t numIndexes, 00112 HardwareBuffer::Usage usage, bool useShadowBuffer = false); 00114 RenderToVertexBufferSharedPtr createRenderToVertexBuffer(void); 00115 }; 00116 00118 class _OgreGLES2Export GLES2DefaultHardwareBufferManager : public HardwareBufferManager 00119 { 00120 public: 00121 GLES2DefaultHardwareBufferManager() 00122 : HardwareBufferManager(OGRE_NEW GLES2DefaultHardwareBufferManagerBase()) 00123 { 00124 00125 } 00126 ~GLES2DefaultHardwareBufferManager() 00127 { 00128 OGRE_DELETE mImpl; 00129 } 00130 }; 00131 } 00132 00133 #endif
Copyright © 2012 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Sun Sep 2 2012 07:27:21