| // 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() |
| } |