Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func UploadImage

func UploadImage(t Texture, offset image.Point, img *image.RGBA)

Types

type AccessBits

type AccessBits uint8
const (
	AccessRead AccessBits = 1 + iota
	AccessWrite
)

type BlendFactor

type BlendFactor uint8
const (
	BlendFactorOne BlendFactor = iota
	BlendFactorOneMinusSrcAlpha
	BlendFactorZero
	BlendFactorDstColor
)

type Buffer

type Buffer interface {
	Release()
	Upload(data []byte)
	Download(data []byte) error
}

type BufferBinding

type BufferBinding uint8
const (
	BufferBindingIndices BufferBinding = 1 << iota
	BufferBindingVertices
	BufferBindingUniforms
	BufferBindingTexture
	BufferBindingFramebuffer
	BufferBindingShaderStorage
)

type Caps

type Caps struct {
	Features       Features
	MaxTextureSize int
}

type DataType

type DataType uint8
const (
	DataTypeFloat DataType = iota
	DataTypeInt
	DataTypeShort
)

type DepthFunc

type DepthFunc uint8
const (
	DepthFuncGreater DepthFunc = iota
	DepthFuncGreaterEqual
)

type Device

type Device interface {
	BeginFrame()
	EndFrame()
	Caps() Caps
	NewTimer() Timer
	// IsContinuousTime reports whether all timer measurements
	// are valid at the point of call.
	IsTimeContinuous() bool
	NewTexture(format TextureFormat, width, height int, minFilter, magFilter TextureFilter, bindings BufferBinding) (Texture, error)
	CurrentFramebuffer() Framebuffer
	NewFramebuffer(tex Texture, depthBits int) (Framebuffer, error)
	NewImmutableBuffer(typ BufferBinding, data []byte) (Buffer, error)
	NewBuffer(typ BufferBinding, size int) (Buffer, error)
	NewComputeProgram(shader ShaderSources) (Program, error)
	NewProgram(vertexShader, fragmentShader ShaderSources) (Program, error)
	NewInputLayout(vertexShader ShaderSources, layout []InputDesc) (InputLayout, error)

	DepthFunc(f DepthFunc)
	ClearDepth(d float32)
	Clear(r, g, b, a float32)
	Viewport(x, y, width, height int)
	DrawArrays(mode DrawMode, off, count int)
	DrawElements(mode DrawMode, off, count int)
	SetBlend(enable bool)
	SetDepthTest(enable bool)
	DepthMask(mask bool)
	BlendFunc(sfactor, dfactor BlendFactor)

	BindInputLayout(i InputLayout)
	BindProgram(p Program)
	BindFramebuffer(f Framebuffer)
	BindTexture(unit int, t Texture)
	BindVertexBuffer(b Buffer, stride, offset int)
	BindIndexBuffer(b Buffer)
	BindImageTexture(unit int, texture Texture, access AccessBits, format TextureFormat)

	MemoryBarrier()
	DispatchCompute(x, y, z int)
}

    Device represents the abstraction of underlying GPU APIs such as OpenGL, Direct3D useful for rendering Gio operations.

    type DrawMode

    type DrawMode uint8
    const (
    	DrawModeTriangleStrip DrawMode = iota
    	DrawModeTriangles
    )

    type Features

    type Features uint
    const (
    	FeatureTimers Features = 1 << iota
    	FeatureFloatRenderTargets
    	FeatureCompute
    )

    func (Features) Has

    func (f Features) Has(feats Features) bool

    type Framebuffer

    type Framebuffer interface {
    	Invalidate()
    	Release()
    	ReadPixels(src image.Rectangle, pixels []byte) error
    }

    type InputDesc

    type InputDesc struct {
    	Type DataType
    	Size int
    
    	Offset int
    }

      InputDesc describes a vertex attribute as laid out in a Buffer.

      type InputLayout

      type InputLayout interface {
      	Release()
      }

        InputLayout is the backend specific representation of the mapping between Buffers and shader attributes.

        type InputLocation

        type InputLocation struct {
        	// For GLSL.
        	Name     string
        	Location int
        	// For HLSL.
        	Semantic      string
        	SemanticIndex int
        
        	Type DataType
        	Size int
        }

        type Program

        type Program interface {
        	Release()
        	SetStorageBuffer(binding int, buf Buffer)
        	SetVertexUniforms(buf Buffer)
        	SetFragmentUniforms(buf Buffer)
        }

        type ShaderSources

        type ShaderSources struct {
        	Name           string
        	GLSL100ES      string
        	GLSL300ES      string
        	GLSL310ES      string
        	GLSL130        string
        	GLSL150        string
        	HLSL           []byte
        	Uniforms       UniformsReflection
        	Inputs         []InputLocation
        	Textures       []TextureBinding
        	StorageBuffers []StorageBufferBinding
        }

        type StorageBufferBinding

        type StorageBufferBinding struct {
        	Binding   int
        	BlockSize int
        }

        type Texture

        type Texture interface {
        	Upload(offset, size image.Point, pixels []byte)
        	Release()
        }

        type TextureBinding

        type TextureBinding struct {
        	Name    string
        	Binding int
        }

        type TextureFilter

        type TextureFilter uint8
        const (
        	FilterNearest TextureFilter = iota
        	FilterLinear
        )

        type TextureFormat

        type TextureFormat uint8
        const (
        	TextureFormatSRGB TextureFormat = iota
        	TextureFormatFloat
        	TextureFormatRGBA8
        )

        type Timer

        type Timer interface {
        	Begin()
        	End()
        	Duration() (time.Duration, bool)
        	Release()
        }

        type UniformBlock

        type UniformBlock struct {
        	Name    string
        	Binding int
        }

        type UniformLocation

        type UniformLocation struct {
        	Name   string
        	Type   DataType
        	Size   int
        	Offset int
        }

        type UniformsReflection

        type UniformsReflection struct {
        	Blocks    []UniformBlock
        	Locations []UniformLocation
        	Size      int
        }

        Source Files