1 //
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 // TransformFeedbackImpl.h: Defines the abstract rx::TransformFeedbackImpl class.
8 
9 #ifndef LIBANGLE_RENDERER_TRANSFORMFEEDBACKIMPL_H_
10 #define LIBANGLE_RENDERER_TRANSFORMFEEDBACKIMPL_H_
11 
12 #include "common/angleutils.h"
13 #include "libANGLE/TransformFeedback.h"
14 
15 namespace rx
16 {
17 
18 class TransformFeedbackImpl : angle::NonCopyable
19 {
20   public:
TransformFeedbackImpl(const gl::TransformFeedbackState & state)21     TransformFeedbackImpl(const gl::TransformFeedbackState &state) : mState(state) {}
~TransformFeedbackImpl()22     virtual ~TransformFeedbackImpl() { }
23 
24     virtual void begin(GLenum primitiveMode) = 0;
25     virtual void end() = 0;
26     virtual void pause() = 0;
27     virtual void resume() = 0;
28 
29     virtual void bindGenericBuffer(const gl::BindingPointer<gl::Buffer> &binding) = 0;
30     virtual void bindIndexedBuffer(size_t index,
31                                    const gl::OffsetBindingPointer<gl::Buffer> &binding) = 0;
32 
33   protected:
34     const gl::TransformFeedbackState &mState;
35 };
36 
37 }
38 
39 #endif // LIBANGLE_RENDERER_TRANSFORMFEEDBACKIMPL_H_
40