1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		04/2009
5 */
6 
7 #ifndef MYGUI_OGRE_VERTEX_BUFFER_H_
8 #define MYGUI_OGRE_VERTEX_BUFFER_H_
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_IVertexBuffer.h"
12 
13 #include <OgreHardwareBufferManager.h>
14 #include <OgreHardwareVertexBuffer.h>
15 #include <OgrePrerequisites.h>
16 #include <OgreRenderOperation.h>
17 #include <OgreRenderSystem.h>
18 #include <OgreTextureManager.h>
19 #include <OgreTextureUnitState.h>
20 
21 #include "MyGUI_LastHeader.h"
22 
23 namespace MyGUI
24 {
25 
26 	class OgreVertexBuffer :
27 		public IVertexBuffer
28 	{
29 	public:
30 		OgreVertexBuffer();
31 		~OgreVertexBuffer() override;
32 
33 		void setVertexCount(size_t _count) override;
34 		size_t getVertexCount() override;
35 
36 		Vertex* lock() override;
37 		void unlock() override;
38 
getRenderOperation()39 		Ogre::RenderOperation* getRenderOperation()
40 		{
41 			return &mRenderOperation;
42 		}
43 
44 	private:
45 		void create();
46 		void destroy();
47 		void resize();
48 
49 	private:
50 		size_t mVertexCount;
51 		size_t mNeedVertexCount;
52 
53 		Ogre::RenderOperation mRenderOperation;
54 		Ogre::HardwareVertexBufferSharedPtr mVertexBuffer;
55 	};
56 
57 } // namespace MyGUI
58 
59 #endif // MYGUI_OGRE_VERTEX_BUFFER_H_
60