Documentation ¶
Index ¶
- Constants
- func CompileNewShader(gl OpenGL, shaderType uint32, source string) (shader uint32, err error)
- func ErrorString(errorCode uint32) string
- func LinkNewProgram(gl OpenGL, shaders ...uint32) (program uint32, err error)
- func LinkNewStandardProgram(gl OpenGL, vertexShaderSource, fragmentShaderSource string) (program uint32, err error)
- type AttributeSetter
- type CharCallback
- type ClosedCallback
- type ClosingCallback
- type DebugBuilder
- type DebuggingEntryFunc
- type DebuggingErrorFunc
- type DebuggingExitFunc
- type FileDropCallback
- type KeyCallback
- type Matrix4Uniform
- type ModifierCallback
- type MouseButtonCallback
- type MouseMoveCallback
- type MouseScrollCallback
- type NamedShaderError
- type OpenGL
- type RenderCallback
- type ResizeCallback
- type ShaderError
- type UniformLocation
- type Vector4Uniform
- type VertexArrayObject
- type Window
- type WindowEventDispatcher
- func (window *WindowEventDispatcher) OnCharCallback(callback CharCallback)
- func (window *WindowEventDispatcher) OnClosed(callback ClosedCallback)
- func (window *WindowEventDispatcher) OnClosing(callback ClosingCallback)
- func (window *WindowEventDispatcher) OnFileDropCallback(callback FileDropCallback)
- func (window *WindowEventDispatcher) OnKeyPress(callback KeyCallback)
- func (window *WindowEventDispatcher) OnKeyRelease(callback KeyCallback)
- func (window *WindowEventDispatcher) OnModifier(callback ModifierCallback)
- func (window *WindowEventDispatcher) OnMouseButtonDown(callback MouseButtonCallback)
- func (window *WindowEventDispatcher) OnMouseButtonUp(callback MouseButtonCallback)
- func (window *WindowEventDispatcher) OnMouseMove(callback MouseMoveCallback)
- func (window *WindowEventDispatcher) OnMouseScroll(callback MouseScrollCallback)
- func (window *WindowEventDispatcher) OnRender(callback RenderCallback)
- func (window *WindowEventDispatcher) OnResize(callback ResizeCallback)
- func (window *WindowEventDispatcher) StickyKeyListener() input.StickyKeyListener
- type WindowState
Constants ¶
const ( DEPTH_BUFFER_BIT uint32 = 0x00000100 STENCIL_BUFFER_BIT = 0x00000400 COLOR_BUFFER_BIT = 0x00004000 )
Buffer Bits nolint: golint,megacheck
const ( POINTS uint32 = 0x0000 LINES = 0x0001 LINE_LOOP = 0x0002 LINE_STRIP = 0x0003 TRIANGLES = 0x0004 TRIANGLE_STRIP = 0x0005 TRIANGLE_FAN = 0x0006 )
Draw Types nolint: golint,megacheck
const ( FRAGMENT_SHADER uint32 = 0x8B30 VERTEX_SHADER = 0x8B31 )
Shader Types nolint: golint,megacheck
const ( COMPILE_STATUS uint32 = 0x8B81 LINK_STATUS = 0x8B82 )
Status Values nolint: golint,megacheck
const ( ARRAY_BUFFER uint32 = 0x8892 ELEMENT_ARRAY_BUFFER = 0x8893 )
Buffer Types nolint: golint,megacheck
const ( FRAMEBUFFER = 0x8D40 RENDERBUFFER = 0x8D41 DEPTH_COMPONENT24 = 0x81A6 COLOR_ATTACHMENT0 = 0x8CE0 DEPTH_ATTACHMENT = 0x8D00 )
Framebuffer Types nolint: golint,megacheck
const ( STREAM_DRAW uint32 = 0x88E0 STATIC_DRAW = 0x88E4 DYNAMIC_DRAW = 0x88E8 )
Draw Types nolint: golint,megacheck
const ( BLEND uint32 = 0x0BE2 DEPTH_TEST = 0x0B71 CULL_FACE = 0x0B44 SCISSOR_TEST = 0x0C11 NICEST = 0x1102 LINE_SMOOTH = 0x0B20 LINE_SMOOTH_HINT = 0x0C52 ACTIVE_TEXTURE = 0x84E0 CURRENT_PROGRAM = 0x8B8D TEXTURE_BINDING_2D = 0x8069 SAMPLER_BINDING = 0x8919 ARRAY_BUFFER_BINDING = 0x8894 ELEMENT_ARRAY_BUFFER_BINDING = 0x8895 VERTEX_ARRAY_BINDING = 0x85B5 POLYGON_MODE = 0x0B40 VIEWPORT = 0x0BA2 SCISSOR_BOX = 0x0C10 BLEND_SRC_RGB = 0x80C9 BLEND_DST_RGB = 0x80C8 BLEND_SRC_ALPHA = 0x80CB BLEND_DST_ALPHA = 0x80CA BLEND_EQUATION_RGB = 0x8009 BLEND_EQUATION_ALPHA = 0x883D FRONT_AND_BACK = 0x0408 FILL = 0x1B02 )
Features nolint: golint,megacheck
const ( SRC_ALPHA uint32 = 0x0302 ONE_MINUS_SRC_ALPHA = 0x0303 ONE_MINUS_SRC_COLOR = 0x0301 FUNC_ADD = 0x8006 )
Alpha constants nolint: golint,megacheck
const ( BYTE uint32 = 0x1400 UNSIGNED_BYTE = 0x1401 SHORT = 0x1402 UNSIGNED_SHORT = 0x1403 INT = 0x1404 UNSIGNED_INT = 0x1405 FLOAT = 0x1406 )
Data Types nolint: golint,megacheck
const ( TEXTURE_2D uint32 = 0x0DE1 TEXTURE0 = 0x84C0 NEAREST = 0x2600 TEXTURE_MAG_FILTER = 0x2800 TEXTURE_MIN_FILTER = 0x2801 UNPACK_ROW_LENGTH = 0x0CF2 LINEAR = 0x2601 )
Texture Constants nolint: golint,megacheck
const ( NO_ERROR uint32 = 0 INVALID_ENUM = 0x0500 INVALID_VALUE = 0x0501 INVALID_OPERATION = 0x0502 STACK_OVERFLOW = 0x0503 STACK_UNDERFLOW = 0x0504 OUT_OF_MEMORY = 0x0505 INVALID_FRAMEBUFFER_OPERATION = 0x0506 )
Errors nolint: golint,megacheck
const ( ALPHA uint32 = 0x1906 RGBA = 0x1908 RED = 0x1903 RGBA8 = 0x8058 R8 = 0x8229 )
Color Types nolint: golint,megacheck
Variables ¶
This section is empty.
Functions ¶
func CompileNewShader ¶
CompileNewShader creates a shader of given type and compiles the provided source.
func ErrorString ¶
ErrorString returns a readable version of the provided error code. If the code is unknown, the textual representation of the hexadecimal value is returned.
func LinkNewProgram ¶
LinkNewProgram creates a new shader program based on the provided shaders.
Types ¶
type AttributeSetter ¶
type AttributeSetter func(OpenGL)
AttributeSetter is a callback function for a VertexArrayObject.
type CharCallback ¶
type CharCallback func(char rune)
CharCallback is called for typing a character.
type ClosedCallback ¶
type ClosedCallback func()
ClosedCallback is the function to clean up resources when the window is being closed.
type ClosingCallback ¶
type ClosingCallback func()
ClosingCallback is the function to handle close requests by the user.
type DebugBuilder ¶
type DebugBuilder struct {
// contains filtered or unexported fields
}
DebugBuilder is a builder for an OpenGL implementation for debugging.
func NewDebugBuilder ¶
func NewDebugBuilder(wrapped OpenGL) *DebugBuilder
NewDebugBuilder wraps the provided OpenGL instance and returns a new builder instance.
func (*DebugBuilder) Build ¶
func (builder *DebugBuilder) Build() OpenGL
Build creates a new instance of the debugging OpenGL implementation. The builder can be reused to create another instance with different parameters.
func (*DebugBuilder) OnEntry ¶
func (builder *DebugBuilder) OnEntry(callback DebuggingEntryFunc) *DebugBuilder
OnEntry registers a callback function to be called before an OpenGL function is called.
func (*DebugBuilder) OnError ¶
func (builder *DebugBuilder) OnError(callback DebuggingErrorFunc) *DebugBuilder
OnError registers a callback function to be called when an OpenGL function set an error state.
func (*DebugBuilder) OnExit ¶
func (builder *DebugBuilder) OnExit(callback DebuggingExitFunc) *DebugBuilder
OnExit registers a callback function to be called after an OpenGL function returned.
type DebuggingEntryFunc ¶
type DebuggingEntryFunc func(name string, param ...interface{})
DebuggingEntryFunc is a function to be called on function entry.
type DebuggingErrorFunc ¶
DebuggingErrorFunc is a function which is called if a previous OpenGL call caused an error state.
type DebuggingExitFunc ¶
type DebuggingExitFunc func(name string, result ...interface{})
DebuggingExitFunc is a function to be called after an OpenGL function has returned. result may be several parameters for functions with multiple return values.
type FileDropCallback ¶ added in v0.2.0
type FileDropCallback func(filePaths []string)
FileDropCallback is called when one or more files were dropped into the window.
type KeyCallback ¶
KeyCallback is called for pressing or releasing a key on the keyboard.
type Matrix4Uniform ¶
type Matrix4Uniform UniformLocation
Matrix4Uniform represents one uniform parameter for a 4x4 matrix.
type ModifierCallback ¶
ModifierCallback is called when the currently active modifier changed.
type MouseButtonCallback ¶
MouseButtonCallback is the function to receive button up/down events. An Up event is sent for every reported Down event, even if the mouse cursor is outside the client area.
type MouseMoveCallback ¶
MouseMoveCallback is the function to receive the current mouse coordinate while moving. Movement is reported while the cursor is within the client area of the window, and beyond the window as long as at least one captured button is pressed. Reported values are with sub-pixel precision, if possible.
type MouseScrollCallback ¶
MouseScrollCallback is the function to receive scroll events. Delta values are right-hand oriented: positive values go right/down/far.
type NamedShaderError ¶ added in v1.8.0
NamedShaderError is an error with a name.
func (NamedShaderError) Error ¶ added in v1.8.0
func (err NamedShaderError) Error() string
Error returns the name with the nested error information.
func (NamedShaderError) Unwrap ¶ added in v1.8.0
func (err NamedShaderError) Unwrap() error
Unwrap returns the nested error.
type OpenGL ¶
type OpenGL interface { ActiveTexture(texture uint32) AttachShader(program uint32, shader uint32) BindAttribLocation(program uint32, index uint32, name string) BindBuffer(target uint32, buffer uint32) BindFramebuffer(target uint32, buffer uint32) BindRenderbuffer(target uint32, buffer uint32) BindSampler(unit uint32, sampler uint32) BindTexture(target uint32, texture uint32) BindVertexArray(array uint32) BlendEquation(mode uint32) BlendEquationSeparate(modeRGB uint32, modeAlpha uint32) BlendFunc(sfactor uint32, dfactor uint32) BlendFuncSeparate(srcRGB uint32, dstRGB uint32, srcAlpha uint32, dstAlpha uint32) BufferData(target uint32, size int, data interface{}, usage uint32) CheckFramebufferStatus(target uint32) uint32 Clear(mask uint32) ClearColor(red float32, green float32, blue float32, alpha float32) CompileShader(shader uint32) CreateProgram() uint32 CreateShader(shaderType uint32) uint32 DeleteBuffers(buffers []uint32) DeleteFramebuffers(buffers []uint32) DeleteProgram(program uint32) DeleteShader(shader uint32) DeleteTextures(textures []uint32) DeleteVertexArrays(arrays []uint32) Disable(capability uint32) DrawArrays(mode uint32, first int32, count int32) DrawBuffers(buffers []uint32) DrawElements(mode uint32, count int32, elementType uint32, indices uintptr) Enable(capability uint32) EnableVertexAttribArray(index uint32) FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) FramebufferTexture(target uint32, attachment uint32, texture uint32, level int32) GenerateMipmap(target uint32) GenBuffers(n int32) []uint32 GenFramebuffers(n int32) []uint32 GenRenderbuffers(n int32) []uint32 GenTextures(n int32) []uint32 GenVertexArrays(n int32) []uint32 GetAttribLocation(program uint32, name string) int32 GetError() uint32 GetIntegerv(name uint32, data *int32) GetShaderInfoLog(shader uint32) string GetShaderParameter(shader uint32, param uint32) int32 GetProgramInfoLog(program uint32) string GetProgramParameter(program uint32, param uint32) int32 GetUniformLocation(program uint32, name string) int32 IsEnabled(capability uint32) bool LinkProgram(program uint32) PixelStorei(name uint32, param int32) PolygonMode(face uint32, mode uint32) ReadPixels(x int32, y int32, width int32, height int32, format uint32, pixelType uint32, pixels interface{}) RenderbufferStorage(target uint32, internalFormat uint32, width int32, height int32) Scissor(x, y int32, width, height int32) ShaderSource(shader uint32, source string) TexImage2D(target uint32, level int32, internalFormat uint32, width int32, height int32, border int32, format uint32, xtype uint32, pixels interface{}) TexParameteri(target uint32, pname uint32, param int32) Uniform1i(location int32, value int32) Uniform4fv(location int32, value *[4]float32) UniformMatrix4fv(location int32, transpose bool, value *[16]float32) UseProgram(program uint32) VertexAttribOffset(index uint32, size int32, attribType uint32, normalized bool, stride int32, offset int) Viewport(x int32, y int32, width int32, height int32) }
OpenGL describes an Open GL interface usable for all environments of this application.
type RenderCallback ¶
type RenderCallback func()
RenderCallback is the function to receive render events. When the callback returns, the window will swap the internal buffer.
type ResizeCallback ¶
ResizeCallback is called for a change of window dimensions.
type ShaderError ¶ added in v1.8.0
type ShaderError struct {
Log string
}
ShaderError describes a problem with a log.
func (ShaderError) Error ¶ added in v1.8.0
func (err ShaderError) Error() string
Error returns the log.
type UniformLocation ¶
type UniformLocation int32
UniformLocation represents a uniform parameter for a shader program.
type Vector4Uniform ¶
type Vector4Uniform UniformLocation
Vector4Uniform represents one uniform parameter for a 4-dimensional vector.
func (Vector4Uniform) Set ¶
func (location Vector4Uniform) Set(gl OpenGL, value *[4]float32)
Set stores the provided 4-dimensional vector as the current uniform value.
type VertexArrayObject ¶
type VertexArrayObject struct {
// contains filtered or unexported fields
}
VertexArrayObject registers common vertex properties which are pre-set before regular rendering loops. Depending on the supported level of the Open GL API, these settings are either buffered (using a VAO - vertex array object), or replayed for every render call.
func NewVertexArrayObject ¶
func NewVertexArrayObject(gl OpenGL, program uint32) *VertexArrayObject
NewVertexArrayObject returns a new instance.
func (*VertexArrayObject) Dispose ¶
func (vao *VertexArrayObject) Dispose()
Dispose drops any associated resources.
func (*VertexArrayObject) OnShader ¶
func (vao *VertexArrayObject) OnShader(task func())
OnShader executes the provided task with an activated shader program and the vertex array object initialized.
func (*VertexArrayObject) WithSetter ¶
func (vao *VertexArrayObject) WithSetter(setter AttributeSetter)
WithSetter registers the setter function for this object. Depending on the support of the OpenGL API, this setter may be called once immediately, or for each render call.
type Window ¶
type Window interface { // StateSnapshot returns the current state of the window. StateSnapshot() WindowState // RestoreState puts the window into the same state when StateSnapshot() was called. RestoreState(state WindowState) // ClipboardString returns the current value of the clipboard, if it is compatible with UTF-8. ClipboardString() (string, error) // SetClipboardString sets the current value of the clipboard as UTF-8 string. SetClipboardString(value string) // OnClosing registers a callback function which shall be called when the user requests to close the window. OnClosing(callback ClosingCallback) // OnClosed registers a callback function which shall be called when the window is being closed. OnClosed(callback ClosedCallback) // SetCloseRequest notifies the window system whether the window shall be closed. // It can be called during the callback of OnClosing() to abort a close request by the user. SetCloseRequest(shouldClose bool) // OpenGL returns the OpenGL API wrapper for this window. OpenGL() OpenGL // OnRender registers a callback function which shall be called to update the scene. OnRender(callback RenderCallback) // OnResize registers a callback function for sizing events. OnResize(callback ResizeCallback) // Size returns the dimensions of the window display area in pixel. Size() (width int, height int) // SetFullScreen sets the full screen state of the window. SetFullScreen(on bool) // SetTitleSuffix appends a text to the current window title. SetTitleSuffix(value string) // SetProjectModified sets an indicator in the window frame that the project has not been saved. SetProjectModified(modified bool) // SetCursorVisible controls whether the mouse cursor is currently visible. SetCursorVisible(visible bool) // OnMouseMove registers a callback function for mouse move events. OnMouseMove(callback MouseMoveCallback) // OnMouseButtonDown registers a callback function for mouse button down events. OnMouseButtonDown(callback MouseButtonCallback) // OnMouseButtonUp registers a callback function for mouse button up events. OnMouseButtonUp(callback MouseButtonCallback) // OnMouseScroll registers a callback function for mouse scroll events. OnMouseScroll(callback MouseScrollCallback) // OnKeyPress registers a callback function for key events. OnKeyPress(callback KeyCallback) // OnKeyRelease registers a callback function for key events. OnKeyRelease(callback KeyCallback) // OnModifier registers a callback function for change of modifier events. OnModifier(callback ModifierCallback) // OnCharCallback registers a callback function for typed characters. OnCharCallback(callback CharCallback) // OnFileDropCallback registers a callback function for dropped files. OnFileDropCallback(callback FileDropCallback) }
Window represents an OpenGL render surface.
type WindowEventDispatcher ¶
type WindowEventDispatcher struct { CallClosing ClosingCallback CallClosed ClosedCallback CallRender RenderCallback CallResize ResizeCallback CallOnMouseMove MouseMoveCallback CallOnMouseButtonUp MouseButtonCallback CallOnMouseButtonDown MouseButtonCallback CallOnMouseScroll MouseScrollCallback CallModifier ModifierCallback CallKeyPress KeyCallback CallKeyRelease KeyCallback CallCharCallback CharCallback CallFileDropCallback FileDropCallback }
WindowEventDispatcher implements the common, basic functionality of Window.
func NullWindowEventDispatcher ¶
func NullWindowEventDispatcher() WindowEventDispatcher
NullWindowEventDispatcher returns an initialized instance with empty callbacks.
func (*WindowEventDispatcher) OnCharCallback ¶
func (window *WindowEventDispatcher) OnCharCallback(callback CharCallback)
OnCharCallback implements the Window interface.
func (*WindowEventDispatcher) OnClosed ¶
func (window *WindowEventDispatcher) OnClosed(callback ClosedCallback)
OnClosed implements the Window interface.
func (*WindowEventDispatcher) OnClosing ¶
func (window *WindowEventDispatcher) OnClosing(callback ClosingCallback)
OnClosing implements the Window interface.
func (*WindowEventDispatcher) OnFileDropCallback ¶ added in v0.2.0
func (window *WindowEventDispatcher) OnFileDropCallback(callback FileDropCallback)
OnFileDropCallback implements the Window interface.
func (*WindowEventDispatcher) OnKeyPress ¶ added in v1.7.0
func (window *WindowEventDispatcher) OnKeyPress(callback KeyCallback)
OnKeyPress implements the Window interface.
func (*WindowEventDispatcher) OnKeyRelease ¶ added in v1.7.0
func (window *WindowEventDispatcher) OnKeyRelease(callback KeyCallback)
OnKeyRelease implements the Window interface.
func (*WindowEventDispatcher) OnModifier ¶
func (window *WindowEventDispatcher) OnModifier(callback ModifierCallback)
OnModifier implements the WindowEventDispatcher interface.
func (*WindowEventDispatcher) OnMouseButtonDown ¶
func (window *WindowEventDispatcher) OnMouseButtonDown(callback MouseButtonCallback)
OnMouseButtonDown implements the Window interface.
func (*WindowEventDispatcher) OnMouseButtonUp ¶
func (window *WindowEventDispatcher) OnMouseButtonUp(callback MouseButtonCallback)
OnMouseButtonUp implements the Window interface.
func (*WindowEventDispatcher) OnMouseMove ¶
func (window *WindowEventDispatcher) OnMouseMove(callback MouseMoveCallback)
OnMouseMove implements the Window interface.
func (*WindowEventDispatcher) OnMouseScroll ¶
func (window *WindowEventDispatcher) OnMouseScroll(callback MouseScrollCallback)
OnMouseScroll implements the Window interface.
func (*WindowEventDispatcher) OnRender ¶
func (window *WindowEventDispatcher) OnRender(callback RenderCallback)
OnRender implements the Window interface.
func (*WindowEventDispatcher) OnResize ¶
func (window *WindowEventDispatcher) OnResize(callback ResizeCallback)
OnResize implements the Window interface.
func (*WindowEventDispatcher) StickyKeyListener ¶
func (window *WindowEventDispatcher) StickyKeyListener() input.StickyKeyListener
StickyKeyListener returns an instance of a listener acting as an adapter for the key-down/-up callbacks.
type WindowState ¶ added in v1.6.0
type WindowState struct { // Maximized is set to true if the window is currently resized to fill the screen. Maximized bool // Top marks the screen position of the upper border of the window. Top int // Left marks the screen position of the left border of the window. Left int // Width marks the width of the non-maximized window. Width int // Height marks the height of the non-maximized window. Height int }
WindowState describes how the window is currently presented to the user.
func WindowStateFromFile ¶ added in v1.6.0
func WindowStateFromFile(filename string, defaultState WindowState) WindowState
WindowStateFromFile attempts to load the state from a file with given name. If this does not work, the given default state will be returned.
func (WindowState) SaveTo ¶ added in v1.6.0
func (state WindowState) SaveTo(filename string) error
SaveTo stores the state in a file with given filename.