blob: 2fb5a36b37bfb34309dd1925857026a2c0103bc3 [file] [log] [blame]
daniel@transgaming.comb80a1902012-12-20 20:57:09 +00001//
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/VertexBuffer.h"
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000013
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000014namespace rx
15{
shannon.woods@transgaming.com486d9e92013-02-28 23:15:41 +000016class Renderer9;
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000017
18class VertexBuffer9 : public VertexBuffer
19{
20 public:
21 explicit VertexBuffer9(rx::Renderer9 *const renderer);
22 virtual ~VertexBuffer9();
23
24 virtual bool initialize(unsigned int size, bool dynamicUsage);
25
26 static VertexBuffer9 *makeVertexBuffer9(VertexBuffer *vertexBuffer);
27
Jamie Madilla857c362013-07-02 11:57:02 -040028 virtual bool storeVertexAttributes(const gl::VertexAttribute &attrib, const gl::VertexAttribCurrentValueData &currentValue,
29 GLint start, GLsizei count, GLsizei instances, unsigned int offset);
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000030
Geoff Langa36ead42013-08-02 11:54:08 -040031 virtual bool getSpaceRequired(const gl::VertexAttribute &attrib, GLsizei count, GLsizei instances, unsigned int *outSpaceRequired) const;
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000032
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000033 virtual unsigned int getBufferSize() const;
34 virtual bool setBufferSize(unsigned int size);
35 virtual bool discard();
36
37 IDirect3DVertexBuffer9 *getBuffer() const;
38
39 private:
40 DISALLOW_COPY_AND_ASSIGN(VertexBuffer9);
41
42 rx::Renderer9 *const mRenderer;
43
44 IDirect3DVertexBuffer9 *mVertexBuffer;
45 unsigned int mBufferSize;
46 bool mDynamicUsage;
47
Geoff Langa36ead42013-08-02 11:54:08 -040048 static bool spaceRequired(const gl::VertexAttribute &attrib, std::size_t count, GLsizei instances,
49 unsigned int *outSpaceRequired);
daniel@transgaming.comb80a1902012-12-20 20:57:09 +000050};
51
52}
53
shannon.woods@transgaming.com315b6402013-02-28 23:12:46 +000054#endif // LIBGLESV2_RENDERER_VERTEXBUFFER9_H_