raylib-go/raylib/rlgl_cgo.go

987 lines
27 KiB
Go

package rl
/*
#include "raylib.h"
#include "rlgl.h"
#include <stdlib.h>
*/
import "C"
import (
"unsafe"
)
// SetMatrixProjection - Set a custom projection matrix (replaces internal projection matrix)
func SetMatrixProjection(proj Matrix) {
cproj := proj.cptr()
C.rlSetMatrixProjection(*cproj)
}
// SetMatrixModelview - Set a custom modelview matrix (replaces internal modelview matrix)
func SetMatrixModelview(view Matrix) {
cview := view.cptr()
C.rlSetMatrixModelview(*cview)
}
// BeginShaderMode - Begin custom shader drawing
func BeginShaderMode(shader Shader) {
cshader := shader.cptr()
C.BeginShaderMode(*cshader)
}
// EndShaderMode - End custom shader drawing (use default shader)
func EndShaderMode() {
C.EndShaderMode()
}
// BeginBlendMode - Begin blending mode (alpha, additive, multiplied)
func BeginBlendMode(mode BlendMode) {
cmode := (C.int)(mode)
C.BeginBlendMode(cmode)
}
// EndBlendMode - End blending mode (reset to default: alpha blending)
func EndBlendMode() {
C.EndBlendMode()
}
// MatrixMode - Choose the current matrix to be transformed
func MatrixMode(mode int32) {
cmode := C.int(mode)
C.rlMatrixMode(cmode)
}
// PushMatrix - Push the current matrix to stack
func PushMatrix() {
C.rlPushMatrix()
}
// PopMatrix - Pop lattest inserted matrix from stack
func PopMatrix() {
C.rlPopMatrix()
}
// LoadIdentity - Reset current matrix to identity matrix
func LoadIdentity() {
C.rlLoadIdentity()
}
// Translatef - Multiply the current matrix by a translation matrix
func Translatef(x float32, y float32, z float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlTranslatef(cx, cy, cz)
}
// Rotatef - Multiply the current matrix by a rotation matrix
func Rotatef(angle float32, x float32, y float32, z float32) {
cangle := C.float(angle)
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlRotatef(cangle, cx, cy, cz)
}
// Scalef - Multiply the current matrix by a scaling matrix
func Scalef(x float32, y float32, z float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlScalef(cx, cy, cz)
}
// MultMatrix - Multiply the current matrix by another matrix
func MultMatrix(m Matrix) {
f := MatrixToFloat(m)
C.rlMultMatrixf((*C.float)(&f[0]))
}
// Frustum .
func Frustum(left float64, right float64, bottom float64, top float64, znear float64, zfar float64) {
cleft := C.double(left)
cright := C.double(right)
cbottom := C.double(bottom)
ctop := C.double(top)
cznear := C.double(znear)
czfar := C.double(zfar)
C.rlFrustum(cleft, cright, cbottom, ctop, cznear, czfar)
}
// Ortho .
func Ortho(left float64, right float64, bottom float64, top float64, znear float64, zfar float64) {
cleft := C.double(left)
cright := C.double(right)
cbottom := C.double(bottom)
ctop := C.double(top)
cznear := C.double(znear)
czfar := C.double(zfar)
C.rlOrtho(cleft, cright, cbottom, ctop, cznear, czfar)
}
// Viewport - Set the viewport area
func Viewport(x int32, y int32, width int32, height int32) {
cx := C.int(x)
cy := C.int(y)
cwidth := C.int(width)
cheight := C.int(height)
C.rlViewport(cx, cy, cwidth, cheight)
}
// SetClipPlanes - Set clip planes distances
func SetClipPlanes(nearPlane, farPlane float64) {
C.rlSetClipPlanes(C.double(nearPlane), C.double(farPlane))
}
// GetCullDistanceNear - Get cull plane distance near
func GetCullDistanceNear() float64 {
ret := C.rlGetCullDistanceNear()
return float64(ret)
}
// GetCullDistanceFar - Get cull plane distance far
func GetCullDistanceFar() float64 {
ret := C.rlGetCullDistanceFar()
return float64(ret)
}
// Begin - Initialize drawing mode (how to organize vertex)
func Begin(mode int32) {
cmode := C.int(mode)
C.rlBegin(cmode)
}
// End - Finish vertex providing
func End() {
C.rlEnd()
}
// Vertex2i - Define one vertex (position) - 2 int
func Vertex2i(x int32, y int32) {
cx := C.int(x)
cy := C.int(y)
C.rlVertex2i(cx, cy)
}
// Vertex2f - Define one vertex (position) - 2 float
func Vertex2f(x float32, y float32) {
cx := C.float(x)
cy := C.float(y)
C.rlVertex2f(cx, cy)
}
// Vertex3f - Define one vertex (position) - 3 float
func Vertex3f(x float32, y float32, z float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlVertex3f(cx, cy, cz)
}
// TexCoord2f - Define one vertex (texture coordinate) - 2 float
func TexCoord2f(x float32, y float32) {
cx := C.float(x)
cy := C.float(y)
C.rlTexCoord2f(cx, cy)
}
// Normal3f - Define one vertex (normal) - 3 float
func Normal3f(x float32, y float32, z float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlNormal3f(cx, cy, cz)
}
// Color4ub - Define one vertex (color) - 4 byte
func Color4ub(r uint8, g uint8, b uint8, a uint8) {
cr := C.uchar(r)
cg := C.uchar(g)
cb := C.uchar(b)
ca := C.uchar(a)
C.rlColor4ub(cr, cg, cb, ca)
}
// Color3f - Define one vertex (color) - 3 float
func Color3f(x float32, y float32, z float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
C.rlColor3f(cx, cy, cz)
}
// Color4f - Define one vertex (color) - 4 float
func Color4f(x float32, y float32, z float32, w float32) {
cx := C.float(x)
cy := C.float(y)
cz := C.float(z)
cw := C.float(w)
C.rlColor4f(cx, cy, cz, cw)
}
// EnableVertexArray - Enable vertex array (VAO, if supported)
func EnableVertexArray(vaoId uint32) bool {
cvaoId := C.uint(vaoId)
return bool(C.rlEnableVertexArray(cvaoId))
}
// DisableVertexArray - Disable vertex array (VAO, if supported)
func DisableVertexArray() {
C.rlDisableVertexArray()
}
// EnableVertexBuffer - Enable vertex buffer (VBO)
func EnableVertexBuffer(id uint32) {
cid := C.uint(id)
C.rlEnableVertexBuffer(cid)
}
// DisableVertexBuffer - Disable vertex buffer (VBO)
func DisableVertexBuffer() {
C.rlDisableVertexBuffer()
}
// EnableVertexBufferElement - Enable vertex buffer element (VBO element)
func EnableVertexBufferElement(id uint32) {
cid := C.uint(id)
C.rlEnableVertexBufferElement(cid)
}
// DisableVertexBufferElement - Disable vertex buffer element (VBO element)
func DisableVertexBufferElement() {
C.rlDisableVertexBufferElement()
}
// EnableVertexAttribute - Enable vertex attribute index
func EnableVertexAttribute(index uint32) {
cindex := C.uint(index)
C.rlEnableVertexAttribute(cindex)
}
// DisableVertexAttribute - Disable vertex attribute index
func DisableVertexAttribute(index uint32) {
cindex := C.uint(index)
C.rlDisableVertexAttribute(cindex)
}
// ActiveTextureSlot - Select and active a texture slot
func ActiveTextureSlot(slot int32) {
cslot := C.int(slot)
C.rlActiveTextureSlot(cslot)
}
// EnableTexture - Enable texture
func EnableTexture(id uint32) {
cid := C.uint(id)
C.rlEnableTexture(cid)
}
// DisableTexture - Disable texture
func DisableTexture() {
C.rlDisableTexture()
}
// EnableTextureCubemap - Enable texture cubemap
func EnableTextureCubemap(id uint32) {
cid := C.uint(id)
C.rlEnableTextureCubemap(cid)
}
// DisableTextureCubemap - Disable texture cubemap
func DisableTextureCubemap() {
C.rlDisableTextureCubemap()
}
// TextureParameters - Set texture parameters (filter, wrap)
func TextureParameters(id uint32, param int32, value int32) {
cid := C.uint(id)
cparam := C.int(param)
cvalue := C.int(value)
C.rlTextureParameters(cid, cparam, cvalue)
}
// CubemapParameters - Set cubemap parameters (filter, wrap)
func CubemapParameters(id uint32, param int32, value int32) {
cid := C.uint(id)
cparam := C.int(param)
cvalue := C.int(value)
C.rlCubemapParameters(cid, cparam, cvalue)
}
// EnableShader - Enable shader program
func EnableShader(id uint32) {
cid := C.uint(id)
C.rlEnableShader(cid)
}
// DisableShader - Disable shader program
func DisableShader() {
C.rlDisableShader()
}
// EnableFramebuffer - Enable render texture (fbo)
func EnableFramebuffer(id uint32) {
cid := C.uint(id)
C.rlEnableFramebuffer(cid)
}
// DisableFramebuffer - Disable render texture (fbo), return to default framebuffer
func DisableFramebuffer() {
C.rlDisableFramebuffer()
}
// GetActiveFramebuffer - Get the currently active render texture (fbo), 0 for default framebuffer
func GetActiveFramebuffer() uint32 {
return uint32(C.rlGetActiveFramebuffer())
}
// ActiveDrawBuffers - Activate multiple draw color buffers
func ActiveDrawBuffers(count int32) {
ccount := C.int(count)
C.rlActiveDrawBuffers(ccount)
}
// BlitFramebuffer - Blit active framebuffer to main framebuffer
func BlitFramebuffer(srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, bufferMask int32) {
C.rlBlitFramebuffer(C.int(srcX), C.int(srcY), C.int(srcWidth), C.int(srcHeight), C.int(dstX), C.int(dstY), C.int(dstWidth), C.int(dstHeight), C.int(bufferMask))
}
// BindFramebuffer - Bind framebuffer (FBO)
func BindFramebuffer(target, framebuffer uint32) {
C.rlBindFramebuffer(C.uint(target), C.uint(framebuffer))
}
// EnableColorBlend - Enable color blending
func EnableColorBlend() {
C.rlEnableColorBlend()
}
// DisableColorBlend - Disable color blending
func DisableColorBlend() {
C.rlDisableColorBlend()
}
// EnableDepthTest - Enable depth test
func EnableDepthTest() {
C.rlEnableDepthTest()
}
// DisableDepthTest - Disable depth test
func DisableDepthTest() {
C.rlDisableDepthTest()
}
// EnableDepthMask - Enable depth write
func EnableDepthMask() {
C.rlEnableDepthMask()
}
// DisableDepthMask - Disable depth write
func DisableDepthMask() {
C.rlDisableDepthMask()
}
// EnableBackfaceCulling - Enable backface culling
func EnableBackfaceCulling() {
C.rlEnableBackfaceCulling()
}
// DisableBackfaceCulling - Disable backface culling
func DisableBackfaceCulling() {
C.rlDisableBackfaceCulling()
}
// SetCullFace - Set face culling mode
func SetCullFace(mode int32) {
cmode := C.int(mode)
C.rlSetCullFace(cmode)
}
// EnableScissorTest - Enable scissor test
func EnableScissorTest() {
C.rlEnableScissorTest()
}
// DisableScissorTest - Disable scissor test
func DisableScissorTest() {
C.rlDisableScissorTest()
}
// Scissor - Scissor test
func Scissor(x int32, y int32, width int32, height int32) {
cx := C.int(x)
cy := C.int(y)
cwidth := C.int(width)
cheight := C.int(height)
C.rlScissor(cx, cy, cwidth, cheight)
}
// EnableWireMode - Enable wire mode
func EnableWireMode() {
C.rlEnableWireMode()
}
// EnablePointMode - Enable point mode
func EnablePointMode() {
C.rlEnablePointMode()
}
// DisableWireMode - Disable wire mode
func DisableWireMode() {
C.rlDisableWireMode()
}
// SetLineWidth - Set the line drawing width
func SetLineWidth(width float32) {
cwidth := C.float(width)
C.rlSetLineWidth(cwidth)
}
// GetLineWidth - Get the line drawing width
func GetLineWidth() float32 {
return float32(C.rlGetLineWidth())
}
// EnableSmoothLines - Enable line aliasing
func EnableSmoothLines() {
C.rlEnableSmoothLines()
}
// DisableSmoothLines - Disable line aliasing
func DisableSmoothLines() {
C.rlDisableSmoothLines()
}
// EnableStereoRender - Enable stereo rendering
func EnableStereoRender() {
C.rlEnableStereoRender()
}
// DisableStereoRender - Disable stereo rendering
func DisableStereoRender() {
C.rlDisableStereoRender()
}
// IsStereoRenderEnabled - Check if stereo render is enabled
func IsStereoRenderEnabled() bool {
return bool(C.rlIsStereoRenderEnabled())
}
// ClearColor - Clear color buffer with color
func ClearColor(r uint8, g uint8, b uint8, a uint8) {
cr := C.uchar(r)
cg := C.uchar(g)
cb := C.uchar(b)
ca := C.uchar(a)
C.rlClearColor(cr, cg, cb, ca)
}
// ClearScreenBuffers - Clear used screen buffers (color and depth)
func ClearScreenBuffers() {
C.rlClearScreenBuffers()
}
// CheckErrors - Check and log OpenGL error codes
func CheckErrors() {
C.rlCheckErrors()
}
// SetBlendMode - Set blending mode
func SetBlendMode(mode BlendMode) {
cmode := C.int(mode)
C.rlSetBlendMode(cmode)
}
// SetBlendFactors - Set blending mode factor and equation (using OpenGL factors)
func SetBlendFactors(glSrcFactor int32, glDstFactor int32, glEquation int32) {
cglSrcFactor := C.int(glSrcFactor)
cglDstFactor := C.int(glDstFactor)
cglEquation := C.int(glEquation)
C.rlSetBlendFactors(cglSrcFactor, cglDstFactor, cglEquation)
}
// SetBlendFactorsSeparate - Set blending mode factors and equations separately (using OpenGL factors)
func SetBlendFactorsSeparate(glSrcRGB int32, glDstRGB int32, glSrcAlpha int32, glDstAlpha int32, glEqRGB int32, glEqAlpha int32) {
cglSrcRGB := C.int(glSrcRGB)
cglDstRGB := C.int(glDstRGB)
cglSrcAlpha := C.int(glSrcAlpha)
cglDstAlpha := C.int(glDstAlpha)
cglEqRGB := C.int(glEqRGB)
cglEqAlpha := C.int(glEqAlpha)
C.rlSetBlendFactorsSeparate(cglSrcRGB, cglDstRGB, cglSrcAlpha, cglDstAlpha, cglEqRGB, cglEqAlpha)
}
// GlInit - Initialize rlgl (buffers, shaders, textures, states)
func GlInit(width int32, height int32) {
cwidth := C.int(width)
cheight := C.int(height)
C.rlglInit(cwidth, cheight)
}
// GlClose - De-inititialize rlgl (buffers, shaders, textures)
func GlClose() {
C.rlglClose()
}
// GetVersion - Get current OpenGL version
func GetVersion() int32 {
return int32(C.rlGetVersion())
}
// SetFramebufferWidth - Set current framebuffer width
func SetFramebufferWidth(width int32) {
cwidth := C.int(width)
C.rlSetFramebufferWidth(cwidth)
}
// GetFramebufferWidth - Get default framebuffer width
func GetFramebufferWidth() int32 {
return int32(C.rlGetFramebufferWidth())
}
// SetFramebufferHeight - Set current framebuffer height
func SetFramebufferHeight(height int32) {
cheight := C.int(height)
C.rlSetFramebufferHeight(cheight)
}
// GetFramebufferHeight - Get default framebuffer height
func GetFramebufferHeight() int32 {
return int32(C.rlGetFramebufferHeight())
}
// GetTextureIdDefault - Get default texture id
func GetTextureIdDefault() uint32 {
return uint32(C.rlGetTextureIdDefault())
}
// GetShaderIdDefault - Get default shader id
func GetShaderIdDefault() uint32 {
return uint32(C.rlGetShaderIdDefault())
}
// LoadRenderBatch - Load a render batch system
func LoadRenderBatch(numBuffers int32, bufferElements int32) RenderBatch {
ret := C.rlLoadRenderBatch(C.int(numBuffers), C.int(bufferElements))
return *(*RenderBatch)(unsafe.Pointer(&ret))
}
// UnloadRenderBatch - Unload render batch system
func UnloadRenderBatch(batch RenderBatch) {
C.rlUnloadRenderBatch(*(*C.rlRenderBatch)(unsafe.Pointer(&batch)))
}
// DrawRenderBatch - Draw render batch data (Update->Draw->Reset)
func DrawRenderBatch(batch *RenderBatch) {
C.rlDrawRenderBatch((*C.rlRenderBatch)(unsafe.Pointer(batch)))
}
// SetRenderBatchActive - Set the active render batch for rlgl (NULL for default internal)
func SetRenderBatchActive(batch *RenderBatch) {
C.rlSetRenderBatchActive((*C.rlRenderBatch)(unsafe.Pointer(batch)))
}
// DrawRenderBatchActive - Update and draw internal render batch
func DrawRenderBatchActive() {
C.rlDrawRenderBatchActive()
}
// CheckRenderBatchLimit - Check internal buffer overflow for a given number of vertex
func CheckRenderBatchLimit(vCount int32) bool {
cvCount := C.int(vCount)
return bool(C.rlCheckRenderBatchLimit(cvCount))
}
// SetTexture - Set current texture for render batch and check buffers limits
func SetTexture(id uint32) {
cid := C.uint(id)
C.rlSetTexture(cid)
}
// LoadVertexArray - Load vertex array (vao) if supported
func LoadVertexArray() uint32 {
return uint32(C.rlLoadVertexArray())
}
// UnloadVertexBuffer .
func UnloadVertexBuffer(vboId uint32) {
cvboId := C.uint(vboId)
C.rlUnloadVertexBuffer(cvboId)
}
// SetVertexAttributeDivisor .
func SetVertexAttributeDivisor(index uint32, divisor int32) {
cindex := C.uint(index)
cdivisor := C.int(divisor)
C.rlSetVertexAttributeDivisor(cindex, cdivisor)
}
// LoadTextureDepth - Load depth texture/renderbuffer (to be attached to fbo)
func LoadTextureDepth(width, height int32, useRenderBuffer bool) {
cwidth := C.int(width)
cheight := C.int(height)
cuseRenderBuffer := C.bool(useRenderBuffer)
C.rlLoadTextureDepth(cwidth, cheight, cuseRenderBuffer)
}
// LoadFramebuffer - Load an empty framebuffer
func LoadFramebuffer(width int32, height int32) uint32 {
return uint32(C.rlLoadFramebuffer())
}
// FramebufferAttach - Attach texture/renderbuffer to a framebuffer
func FramebufferAttach(fboId uint32, texId uint32, attachType int32, texType int32, mipLevel int32) {
cfboId := C.uint(fboId)
ctexId := C.uint(texId)
cattachType := C.int(attachType)
ctexType := C.int(texType)
cmipLevel := C.int(mipLevel)
C.rlFramebufferAttach(cfboId, ctexId, cattachType, ctexType, cmipLevel)
}
// FramebufferComplete - Verify framebuffer is complete
func FramebufferComplete(id uint32) bool {
cid := C.uint(id)
return bool(C.rlFramebufferComplete(cid))
}
// UnloadFramebuffer - Delete framebuffer from GPU
func UnloadFramebuffer(id uint32) {
cid := C.uint(id)
C.rlUnloadFramebuffer(cid)
}
// LoadShaderCode - Load shader from code strings
func LoadShaderCode(vsCode string, fsCode string) uint32 {
cvsCode := C.CString(vsCode)
defer C.free(unsafe.Pointer(cvsCode))
cfsCode := C.CString(fsCode)
defer C.free(unsafe.Pointer(cfsCode))
return uint32(C.rlLoadShaderCode(cvsCode, cfsCode))
}
// CompileShader - Compile custom shader and return shader id (type: VERTEX_SHADER, FRAGMENT_SHADER, COMPUTE_SHADER)
func CompileShader(shaderCode string, type_ int32) uint32 {
cshaderCode := C.CString(shaderCode)
defer C.free(unsafe.Pointer(cshaderCode))
ctype_ := C.int(type_)
return uint32(C.rlCompileShader(cshaderCode, ctype_))
}
// LoadShaderProgram - Load custom shader program
func LoadShaderProgram(vShaderId uint32, fShaderId uint32) uint32 {
cvShaderId := C.uint(vShaderId)
cfShaderId := C.uint(fShaderId)
return uint32(C.rlLoadShaderProgram(cvShaderId, cfShaderId))
}
// UnloadShaderProgram - Unload shader program
func UnloadShaderProgram(id uint32) {
cid := C.uint(id)
C.rlUnloadShaderProgram(cid)
}
// GetLocationUniform - Get shader location uniform
func GetLocationUniform(shaderId uint32, uniformName string) int32 {
cshaderId := C.uint(shaderId)
cuniformName := C.CString(uniformName)
defer C.free(unsafe.Pointer(cuniformName))
return int32(C.rlGetLocationUniform(cshaderId, cuniformName))
}
// GetLocationAttrib - Get shader location attribute
func GetLocationAttrib(shaderId uint32, attribName string) int32 {
cshaderId := C.uint(shaderId)
cattribName := C.CString(attribName)
defer C.free(unsafe.Pointer(cattribName))
return int32(C.rlGetLocationAttrib(cshaderId, cattribName))
}
// SetUniformSampler - Set shader value sampler
func SetUniformSampler(locIndex int32, textureId uint32) {
clocIndex := C.int(locIndex)
ctextureId := C.uint(textureId)
C.rlSetUniformSampler(clocIndex, ctextureId)
}
// LoadComputeShaderProgram -
func LoadComputeShaderProgram(shaderID uint32) uint32 {
cshaderID := C.uint(shaderID)
return uint32(C.rlLoadComputeShaderProgram(cshaderID))
}
// ComputeShaderDispatch - Dispatch compute shader (equivalent to *draw* for graphics pilepine)
func ComputeShaderDispatch(groupX uint32, groupY uint32, groupZ uint32) {
cgroupX := C.uint(groupX)
cgroupY := C.uint(groupY)
cgroupZ := C.uint(groupZ)
C.rlComputeShaderDispatch(cgroupX, cgroupY, cgroupZ)
}
// LoadShaderBuffer - Load shader storage buffer object (SSBO)
func LoadShaderBuffer(size uint32, data unsafe.Pointer, usageHint int32) uint32 {
csize := C.uint(size)
cdata := data
cusageHint := C.int(usageHint)
return uint32(C.rlLoadShaderBuffer(csize, cdata, cusageHint))
}
// UnloadShaderBuffer - Unload shader storage buffer object (SSBO)
func UnloadShaderBuffer(id uint32) {
cid := C.uint(id)
C.rlUnloadShaderBuffer(cid)
}
// UpdateShaderBuffer - Update SSBO buffer data
func UpdateShaderBuffer(id uint32, data unsafe.Pointer, dataSize uint32, offset uint32) {
cid := C.uint(id)
cdata := data
cdataSize := C.uint(dataSize)
coffset := C.uint(offset)
C.rlUpdateShaderBuffer(cid, cdata, cdataSize, coffset)
}
// BindShaderBuffer - Bind SSBO buffer
func BindShaderBuffer(id uint32, index uint32) {
cid := C.uint(id)
cindex := C.uint(index)
C.rlBindShaderBuffer(cid, cindex)
}
// ReadShaderBuffer - Read SSBO buffer data (GPU->CPU)
func ReadShaderBuffer(id uint32, dest unsafe.Pointer, count uint32, offset uint32) {
cid := C.uint(id)
cdest := dest
ccount := C.uint(count)
coffset := C.uint(offset)
C.rlReadShaderBuffer(cid, cdest, ccount, coffset)
}
// CopyShaderBuffer - Copy SSBO data between buffers
func CopyShaderBuffer(destId uint32, srcId uint32, destOffset uint32, srcOffset uint32, count uint32) {
cdestId := C.uint(destId)
csrcId := C.uint(srcId)
cdestOffset := C.uint(destOffset)
csrcOffset := C.uint(srcOffset)
ccount := C.uint(count)
C.rlCopyShaderBuffer(cdestId, csrcId, cdestOffset, csrcOffset, ccount)
}
// GetShaderBufferSize - Get SSBO buffer size
func GetShaderBufferSize(id uint32) uint32 {
cid := C.uint(id)
return uint32(C.rlGetShaderBufferSize(cid))
}
// BindImageTexture - Bind image texture
func BindImageTexture(id uint32, index uint32, format int32, readonly bool) {
cid := C.uint(id)
cindex := C.uint(index)
cformat := C.int(format)
creadonly := C.bool(readonly)
C.rlBindImageTexture(cid, cindex, cformat, creadonly)
}
// GetMatrixModelview - Get internal modelview matrix
func GetMatrixModelview() Matrix {
cResult := C.rlGetMatrixModelview()
var goRes Matrix
goRes.M4 = float32(cResult.m4)
goRes.M2 = float32(cResult.m2)
goRes.M14 = float32(cResult.m14)
goRes.M3 = float32(cResult.m3)
goRes.M7 = float32(cResult.m7)
goRes.M12 = float32(cResult.m12)
goRes.M6 = float32(cResult.m6)
goRes.M15 = float32(cResult.m15)
goRes.M5 = float32(cResult.m5)
goRes.M9 = float32(cResult.m9)
goRes.M13 = float32(cResult.m13)
goRes.M10 = float32(cResult.m10)
goRes.M11 = float32(cResult.m11)
goRes.M0 = float32(cResult.m0)
goRes.M8 = float32(cResult.m8)
goRes.M1 = float32(cResult.m1)
return goRes
}
// GetMatrixProjection - Get internal projection matrix
func GetMatrixProjection() Matrix {
cResult := C.rlGetMatrixProjection()
var goRes Matrix
goRes.M13 = float32(cResult.m13)
goRes.M10 = float32(cResult.m10)
goRes.M11 = float32(cResult.m11)
goRes.M15 = float32(cResult.m15)
goRes.M5 = float32(cResult.m5)
goRes.M9 = float32(cResult.m9)
goRes.M1 = float32(cResult.m1)
goRes.M0 = float32(cResult.m0)
goRes.M8 = float32(cResult.m8)
goRes.M14 = float32(cResult.m14)
goRes.M3 = float32(cResult.m3)
goRes.M7 = float32(cResult.m7)
goRes.M4 = float32(cResult.m4)
goRes.M2 = float32(cResult.m2)
goRes.M12 = float32(cResult.m12)
goRes.M6 = float32(cResult.m6)
return goRes
}
// GetMatrixTransform - Get internal accumulated transform matrix
func GetMatrixTransform() Matrix {
cResult := C.rlGetMatrixTransform()
var goRes Matrix
goRes.M0 = float32(cResult.m0)
goRes.M8 = float32(cResult.m8)
goRes.M1 = float32(cResult.m1)
goRes.M7 = float32(cResult.m7)
goRes.M4 = float32(cResult.m4)
goRes.M2 = float32(cResult.m2)
goRes.M14 = float32(cResult.m14)
goRes.M3 = float32(cResult.m3)
goRes.M12 = float32(cResult.m12)
goRes.M6 = float32(cResult.m6)
goRes.M11 = float32(cResult.m11)
goRes.M15 = float32(cResult.m15)
goRes.M5 = float32(cResult.m5)
goRes.M9 = float32(cResult.m9)
goRes.M13 = float32(cResult.m13)
goRes.M10 = float32(cResult.m10)
return goRes
}
// GetMatrixProjectionStereo - Get internal projection matrix for stereo render (selected eye)
func GetMatrixProjectionStereo(eye int32) Matrix {
ceye := C.int(eye)
cResult := C.rlGetMatrixProjectionStereo(ceye)
var goRes Matrix
goRes.M12 = float32(cResult.m12)
goRes.M6 = float32(cResult.m6)
goRes.M15 = float32(cResult.m15)
goRes.M5 = float32(cResult.m5)
goRes.M9 = float32(cResult.m9)
goRes.M13 = float32(cResult.m13)
goRes.M10 = float32(cResult.m10)
goRes.M11 = float32(cResult.m11)
goRes.M0 = float32(cResult.m0)
goRes.M8 = float32(cResult.m8)
goRes.M1 = float32(cResult.m1)
goRes.M4 = float32(cResult.m4)
goRes.M2 = float32(cResult.m2)
goRes.M14 = float32(cResult.m14)
goRes.M3 = float32(cResult.m3)
goRes.M7 = float32(cResult.m7)
return goRes
}
// GetMatrixViewOffsetStereo - Get internal view offset matrix for stereo render (selected eye)
func GetMatrixViewOffsetStereo(eye int32) Matrix {
ceye := C.int(eye)
cResult := C.rlGetMatrixViewOffsetStereo(ceye)
var goRes Matrix
goRes.M0 = float32(cResult.m0)
goRes.M8 = float32(cResult.m8)
goRes.M1 = float32(cResult.m1)
goRes.M4 = float32(cResult.m4)
goRes.M2 = float32(cResult.m2)
goRes.M14 = float32(cResult.m14)
goRes.M3 = float32(cResult.m3)
goRes.M7 = float32(cResult.m7)
goRes.M12 = float32(cResult.m12)
goRes.M6 = float32(cResult.m6)
goRes.M5 = float32(cResult.m5)
goRes.M9 = float32(cResult.m9)
goRes.M13 = float32(cResult.m13)
goRes.M10 = float32(cResult.m10)
goRes.M11 = float32(cResult.m11)
goRes.M15 = float32(cResult.m15)
return goRes
}
// SetMatrixProjectionStereo - Set eyes projection matrices for stereo rendering
func SetMatrixProjectionStereo(right Matrix, left Matrix) {
var cright C.struct_Matrix
cright.m12 = C.float(right.M12)
cright.m6 = C.float(right.M6)
cright.m5 = C.float(right.M5)
cright.m9 = C.float(right.M9)
cright.m13 = C.float(right.M13)
cright.m10 = C.float(right.M10)
cright.m11 = C.float(right.M11)
cright.m15 = C.float(right.M15)
cright.m0 = C.float(right.M0)
cright.m8 = C.float(right.M8)
cright.m1 = C.float(right.M1)
cright.m4 = C.float(right.M4)
cright.m2 = C.float(right.M2)
cright.m14 = C.float(right.M14)
cright.m3 = C.float(right.M3)
cright.m7 = C.float(right.M7)
var cleft C.struct_Matrix
cleft.m10 = C.float(left.M10)
cleft.m11 = C.float(left.M11)
cleft.m15 = C.float(left.M15)
cleft.m5 = C.float(left.M5)
cleft.m9 = C.float(left.M9)
cleft.m13 = C.float(left.M13)
cleft.m0 = C.float(left.M0)
cleft.m8 = C.float(left.M8)
cleft.m1 = C.float(left.M1)
cleft.m3 = C.float(left.M3)
cleft.m7 = C.float(left.M7)
cleft.m4 = C.float(left.M4)
cleft.m2 = C.float(left.M2)
cleft.m14 = C.float(left.M14)
cleft.m12 = C.float(left.M12)
cleft.m6 = C.float(left.M6)
C.rlSetMatrixProjectionStereo(cright, cleft)
}
// SetMatrixViewOffsetStereo - Set eyes view offsets matrices for stereo rendering
func SetMatrixViewOffsetStereo(right Matrix, left Matrix) {
var cright C.struct_Matrix
cright.m12 = C.float(right.M12)
cright.m6 = C.float(right.M6)
cright.m5 = C.float(right.M5)
cright.m9 = C.float(right.M9)
cright.m13 = C.float(right.M13)
cright.m10 = C.float(right.M10)
cright.m11 = C.float(right.M11)
cright.m15 = C.float(right.M15)
cright.m0 = C.float(right.M0)
cright.m8 = C.float(right.M8)
cright.m1 = C.float(right.M1)
cright.m4 = C.float(right.M4)
cright.m2 = C.float(right.M2)
cright.m14 = C.float(right.M14)
cright.m3 = C.float(right.M3)
cright.m7 = C.float(right.M7)
var cleft C.struct_Matrix
cleft.m12 = C.float(left.M12)
cleft.m6 = C.float(left.M6)
cleft.m5 = C.float(left.M5)
cleft.m9 = C.float(left.M9)
cleft.m13 = C.float(left.M13)
cleft.m10 = C.float(left.M10)
cleft.m11 = C.float(left.M11)
cleft.m15 = C.float(left.M15)
cleft.m0 = C.float(left.M0)
cleft.m8 = C.float(left.M8)
cleft.m1 = C.float(left.M1)
cleft.m4 = C.float(left.M4)
cleft.m2 = C.float(left.M2)
cleft.m14 = C.float(left.M14)
cleft.m3 = C.float(left.M3)
cleft.m7 = C.float(left.M7)
C.rlSetMatrixViewOffsetStereo(cright, cleft)
}
// LoadDrawCube - Load and draw a cube
func LoadDrawCube() {
C.rlLoadDrawCube()
}
// LoadDrawQuad - Load and draw a quad
func LoadDrawQuad() {
C.rlLoadDrawQuad()
}