blob: d1b51d45f86daf7c8bca7fd2a31b2ca53afa0aa5 [file] [log] [blame]
// Copyright 2012 The go-gl Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package gl
// #include "gl.h"
import "C"
// Transform Feedback Objects
type TransformFeedback Object
// Create a single transform feedback object
func GenTransformFeedback() TransformFeedback {
var t C.GLuint
C.glGenTransformFeedbacks(1, &t)
return TransformFeedback(t)
}
// Fill slice with new transform feedbacks
func GenTransformFeedbacks(feedbacks []TransformFeedback) {
if len(feedbacks) > 0 {
C.glGenTransformFeedbacks(C.GLsizei(len(feedbacks)), (*C.GLuint)(&feedbacks[0]))
}
}
// Delete a transform feedback object
func (feedback TransformFeedback) Delete() {
C.glDeleteTransformFeedbacks(1, (*C.GLuint)(&feedback))
}
// Draw the results of the last Begin/End cycle from this transform feedback using primitive type 'mode'
func (feedback TransformFeedback) Draw(mode GLenum) {
C.glDrawTransformFeedback(C.GLenum(mode), C.GLuint(feedback))
}
// Delete all transform feedbacks in a slice
func DeleteTransformFeedbacks(feedbacks []TransformFeedback) {
if len(feedbacks) > 0 {
C.glDeleteTransformFeedbacks(C.GLsizei(len(feedbacks)), (*C.GLuint)(&feedbacks[0]))
}
}
// Bind this transform feedback as target
func (feedback TransformFeedback) Bind(target GLenum) {
C.glBindTransformFeedback(C.GLenum(target), C.GLuint(feedback))
}
// Begin transform feedback with primitive type 'mode'
func BeginTransformFeedback(mode GLenum) {
C.glBeginTransformFeedback(C.GLenum(mode))
}
// Pause transform feedback
func PauseTransformFeedback() {
C.glPauseTransformFeedback()
}
// End transform feedback
func EndTransformFeedback() {
C.glEndTransformFeedback()
}