1//
2// Copyright (c) 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#include "libGLESv2/TransformFeedback.h"
8#include "libGLESv2/renderer/TransformFeedbackImpl.h"
9
10namespace gl
11{
12
13TransformFeedback::TransformFeedback(rx::TransformFeedbackImpl* impl, GLuint id)
14    : RefCountObject(id),
15      mTransformFeedback(impl),
16      mStarted(GL_FALSE),
17      mPrimitiveMode(GL_NONE),
18      mPaused(GL_FALSE)
19{
20    ASSERT(impl != NULL);
21}
22
23TransformFeedback::~TransformFeedback()
24{
25    SafeDelete(mTransformFeedback);
26}
27
28void TransformFeedback::start(GLenum primitiveMode)
29{
30    mStarted = GL_TRUE;
31    mPrimitiveMode = primitiveMode;
32    mPaused = GL_FALSE;
33    mTransformFeedback->begin(primitiveMode);
34}
35
36void TransformFeedback::stop()
37{
38    mStarted = GL_FALSE;
39    mPrimitiveMode = GL_NONE;
40    mPaused = GL_FALSE;
41    mTransformFeedback->end();
42}
43
44GLboolean TransformFeedback::isStarted() const
45{
46    return mStarted;
47}
48
49GLenum TransformFeedback::getDrawMode() const
50{
51    return mPrimitiveMode;
52}
53
54void TransformFeedback::pause()
55{
56    mPaused = GL_TRUE;
57    mTransformFeedback->pause();
58}
59
60void TransformFeedback::resume()
61{
62    mPaused = GL_FALSE;
63    mTransformFeedback->resume();
64}
65
66GLboolean TransformFeedback::isPaused() const
67{
68    return mPaused;
69}
70
71}
72