//
// Copyright (c) 2014 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.
//

#ifndef LIBGLESV2_TRANSFORM_FEEDBACK_H_
#define LIBGLESV2_TRANSFORM_FEEDBACK_H_

#include "common/angleutils.h"
#include "common/RefCountObject.h"

#include <GLES3/gl3.h>
#include <GLES2/gl2.h>

namespace gl
{

class TransformFeedback : public RefCountObject
{
  public:
    explicit TransformFeedback(GLuint id);
    virtual ~TransformFeedback();

    void start(GLenum primitiveMode);
    void stop();
    GLboolean isStarted() const;

    GLenum getDrawMode() const;

    void pause();
    void resume();
    GLboolean isPaused() const;

  private:
    DISALLOW_COPY_AND_ASSIGN(TransformFeedback);

    GLboolean mStarted;
    GLenum mPrimitiveMode;
    GLboolean mPaused;
};

}

#endif // LIBGLESV2_TRANSFORM_FEEDBACK_H_
