blob: a5e4d1bb8ac6cbe78dd13066043930c2ef53754a [file] [log] [blame]
Brandon Jones5bf98292014-06-06 17:19:38 -07001//
2// Copyright 2014 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// VertexAttribImpl.h: Defines the abstract rx::VertexAttribImpl class.
8
Geoff Lang0a73dd82014-11-19 16:18:08 -05009#ifndef LIBANGLE_RENDERER_VERTEXARRAYIMPL_H_
10#define LIBANGLE_RENDERER_VERTEXARRAYIMPL_H_
Brandon Jones5bf98292014-06-06 17:19:38 -070011
12#include "common/angleutils.h"
Geoff Lang2b5420c2014-11-19 14:20:15 -050013#include "libANGLE/Buffer.h"
Jamie Madill8e344942015-07-09 14:22:07 -040014#include "libANGLE/VertexArray.h"
Brandon Jones5bf98292014-06-06 17:19:38 -070015
16namespace rx
17{
18
Jamie Madillf0d10f82015-03-31 12:56:52 -040019class VertexArrayImpl : angle::NonCopyable
Brandon Jones5bf98292014-06-06 17:19:38 -070020{
21 public:
Jamie Madill8e344942015-07-09 14:22:07 -040022 VertexArrayImpl(const gl::VertexArray::Data &data) : mData(data) { }
Brandon Jones18fe4292014-07-22 13:03:06 -070023 virtual ~VertexArrayImpl() { }
24
Brandon Jones5bf98292014-06-06 17:19:38 -070025 virtual void setElementArrayBuffer(const gl::Buffer *buffer) = 0;
26 virtual void setAttribute(size_t idx, const gl::VertexAttribute &attr) = 0;
27 virtual void setAttributeDivisor(size_t idx, GLuint divisor) = 0;
28 virtual void enableAttribute(size_t idx, bool enabledState) = 0;
Jamie Madill8e344942015-07-09 14:22:07 -040029
30 protected:
31 const gl::VertexArray::Data &mData;
Brandon Jones5bf98292014-06-06 17:19:38 -070032};
33
34}
35
Geoff Lang0a73dd82014-11-19 16:18:08 -050036#endif // LIBANGLE_RENDERER_VERTEXARRAYIMPL_H_