1a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com//
2a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
3a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be
4a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com// found in the LICENSE file.
5a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com//
6a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
7a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com// Indexffer9.h: Defines the D3D9 IndexBuffer implementation.
8a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
9a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com#ifndef LIBGLESV2_RENDERER_INDEXBUFFER9_H_
10a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com#define LIBGLESV2_RENDERER_INDEXBUFFER9_H_
11a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
12a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com#include "libGLESv2/renderer/IndexBuffer.h"
13a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
14a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.comnamespace rx
15a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com{
16486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Renderer9;
17a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
18a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.comclass IndexBuffer9 : public IndexBuffer
19a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com{
20a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com  public:
21a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    explicit IndexBuffer9(Renderer9 *const renderer);
22a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual ~IndexBuffer9();
23a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
24a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual bool initialize(unsigned int bufferSize, GLenum indexType, bool dynamic);
25a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
26a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    static IndexBuffer9 *makeIndexBuffer9(IndexBuffer *indexBuffer);
27a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
28a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual bool mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory);
29a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual bool unmapBuffer();
30a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
31a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual GLenum getIndexType() const;
32a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual unsigned int getBufferSize() const;
33a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual bool setSize(unsigned int bufferSize, GLenum indexType);
34a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
35a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    virtual bool discard();
36a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
37a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    D3DFORMAT getIndexFormat() const;
38a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    IDirect3DIndexBuffer9 *getBuffer() const;
39a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
40a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com  private:
41a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    DISALLOW_COPY_AND_ASSIGN(IndexBuffer9);
42a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
43a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    rx::Renderer9 *const mRenderer;
44a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
45a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    IDirect3DIndexBuffer9 *mIndexBuffer;
46a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    unsigned int mBufferSize;
47a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    GLenum mIndexType;
48a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com    bool mDynamic;
49a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com};
50a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
51a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com}
52a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com
53a5e0d720d1570a9bfe71c8d0fc3308b8496a97a2daniel@transgaming.com#endif // LIBGLESV2_RENDERER_INDEXBUFFER9_H_
54