1 // 2 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 // VertexBuffer9.h: Defines the D3D9 VertexBuffer implementation. 8 9 #ifndef LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ 10 #define LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ 11 12 #include "libGLESv2/renderer/d3d/VertexBuffer.h" 13 14 namespace rx 15 { 16 class Renderer9; 17 18 class VertexBuffer9 : public VertexBuffer 19 { 20 public: 21 explicit VertexBuffer9(rx::Renderer9 *renderer); 22 virtual ~VertexBuffer9(); 23 24 virtual gl::Error initialize(unsigned int size, bool dynamicUsage); 25 26 static VertexBuffer9 *makeVertexBuffer9(VertexBuffer *vertexBuffer); 27 28 virtual gl::Error storeVertexAttributes(const gl::VertexAttribute &attrib, const gl::VertexAttribCurrentValueData ¤tValue, 29 GLint start, GLsizei count, GLsizei instances, unsigned int offset); 30 31 virtual gl::Error getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances, unsigned int *outSpaceRequired) const; 32 33 virtual unsigned int getBufferSize() const; 34 virtual gl::Error setBufferSize(unsigned int size); 35 virtual gl::Error discard(); 36 37 IDirect3DVertexBuffer9 *getBuffer() const; 38 39 private: 40 DISALLOW_COPY_AND_ASSIGN(VertexBuffer9); 41 42 rx::Renderer9 *mRenderer; 43 44 IDirect3DVertexBuffer9 *mVertexBuffer; 45 unsigned int mBufferSize; 46 bool mDynamicUsage; 47 48 gl::Error spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances, 49 unsigned int *outSpaceRequired) const; 50 }; 51 52 } 53 54 #endif // LIBGLESV2_RENDERER_VERTEXBUFFER9_H_ 55