| // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // VertexDataManager.h: Defines the VertexDataManager, a class that |
| // runs the Buffer translation process. |
| #ifndef LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ |
| #define LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ |
| #include "libGLESv2/Constants.h" |
| #include "common/angleutils.h" |
| class StreamingVertexBufferInterface; |
| struct TranslatedAttribute |
| const gl::VertexAttribute *attribute; |
| unsigned int stride; // 0 means not to advance the read pointer at all |
| VertexBuffer *vertexBuffer; |
| VertexDataManager(rx::Renderer *renderer); |
| virtual ~VertexDataManager(); |
| GLenum prepareVertexData(const gl::VertexAttribute attribs[], gl::ProgramBinary *programBinary, GLint start, GLsizei count, TranslatedAttribute *outAttribs, GLsizei instances); |
| DISALLOW_COPY_AND_ASSIGN(VertexDataManager); |
| rx::Renderer *const mRenderer; |
| StreamingVertexBufferInterface *mStreamingBuffer; |
| float mCurrentValue[gl::MAX_VERTEX_ATTRIBS][4]; |
| StreamingVertexBufferInterface *mCurrentValueBuffer[gl::MAX_VERTEX_ATTRIBS]; |
| std::size_t mCurrentValueOffsets[gl::MAX_VERTEX_ATTRIBS]; |
| #endif // LIBGLESV2_RENDERER_VERTEXDATAMANAGER_H_ |