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.
7 // VertexBuffer9.h: Defines the D3D9 VertexBuffer implementation.
9 #ifndef LIBGLESV2_RENDERER_VERTEXBUFFER9_H_
10 #define LIBGLESV2_RENDERER_VERTEXBUFFER9_H_
12 #include "libGLESv2/renderer/d3d/VertexBuffer.h"
18 class VertexBuffer9 : public VertexBuffer
21 explicit VertexBuffer9(rx::Renderer9 *renderer);
22 virtual ~VertexBuffer9();
24 virtual bool initialize(unsigned int size, bool dynamicUsage);
26 static VertexBuffer9 *makeVertexBuffer9(VertexBuffer *vertexBuffer);
28 virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, const gl::VertexAttribCurrentValueData ¤tValue,
29 GLint start, GLsizei count, GLsizei instances, unsigned int offset);
31 virtual bool getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances, unsigned int *outSpaceRequired) const;
33 virtual unsigned int getBufferSize() const;
34 virtual bool setBufferSize(unsigned int size);
35 virtual bool discard();
37 IDirect3DVertexBuffer9 *getBuffer() const;
40 DISALLOW_COPY_AND_ASSIGN(VertexBuffer9);
42 rx::Renderer9 *mRenderer;
44 IDirect3DVertexBuffer9 *mVertexBuffer;
45 unsigned int mBufferSize;
48 bool spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances,
49 unsigned int *outSpaceRequired) const;
54 #endif // LIBGLESV2_RENDERER_VERTEXBUFFER9_H_