gles

package
v0.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2025 License: MIT Imports: 8 Imported by: 1

Documentation

Overview

Package gles implements the HAL backend for OpenGL ES 3.0 / OpenGL 3.3+.

This backend provides a Pure Go implementation using syscall directly, without any CGO or external dependencies.

Platform Support

Currently supported:

  • Windows (WGL) - via hal/gles/wgl package

Planned:

  • Linux (GLX/EGL)
  • macOS (CGL/EGL)
  • Android (EGL)
  • WebGL (via wasm)

Architecture

The backend is organized into subpackages:

hal/gles/
├── gl/       - OpenGL function bindings
├── wgl/      - Windows GL context management
├── glx/      - Linux X11 GL context (planned)
├── egl/      - EGL context for mobile/modern Linux (planned)
└── cgl/      - macOS CGL context (planned)

Usage

Import this package to register the OpenGL backend:

import _ "github.com/gogpu/wgpu/hal/gles"

The backend is then available via hal.GetBackend(types.BackendGL).

OpenGL Version Requirements

Minimum requirements:

  • OpenGL 3.3 Core Profile (desktop)
  • OpenGL ES 3.0 (mobile/embedded)

The backend queries actual capabilities at runtime and adjusts feature availability accordingly.

Limitations

Compared to Vulkan/Metal/DX12:

  • No async compute (compute runs on graphics queue)
  • Limited bindless resource support
  • Single command queue
  • Synchronous texture uploads

Command Recording

This backend uses a command recording pattern similar to wgpu-hal. Commands are recorded during render/compute pass encoding and executed during Queue.Submit. This allows for:

  • State tracking and optimization
  • Better error handling
  • Potential future multithreading

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

type Adapter struct {
	// contains filtered or unexported fields
}

Adapter implements hal.Adapter for OpenGL on Linux.

func (*Adapter) Destroy

func (a *Adapter) Destroy()

Destroy releases the adapter.

func (*Adapter) Open

func (a *Adapter) Open(_ types.Features, _ types.Limits) (hal.OpenDevice, error)

Open creates a logical device with the requested features and limits.

func (*Adapter) SurfaceCapabilities

func (a *Adapter) SurfaceCapabilities(_ hal.Surface) *hal.SurfaceCapabilities

SurfaceCapabilities returns surface capabilities.

func (*Adapter) TextureFormatCapabilities

func (a *Adapter) TextureFormatCapabilities(format types.TextureFormat) hal.TextureFormatCapabilities

TextureFormatCapabilities returns capabilities for a texture format.

type Backend

type Backend struct{}

Backend implements hal.Backend for OpenGL ES / OpenGL 3.3+ on Linux.

func (Backend) CreateInstance

func (Backend) CreateInstance(_ *hal.InstanceDescriptor) (hal.Instance, error)

CreateInstance creates a new OpenGL instance.

func (Backend) Variant

func (Backend) Variant() types.Backend

Variant returns the backend type identifier.

type BindGroup

type BindGroup struct {
	// contains filtered or unexported fields
}

BindGroup implements hal.BindGroup for OpenGL.

func (*BindGroup) Destroy

func (g *BindGroup) Destroy()

Destroy is a no-op for bind groups.

type BindGroupDescriptor

type BindGroupDescriptor = hal.BindGroupDescriptor

Type aliases for hal descriptors

type BindGroupLayout

type BindGroupLayout struct {
	// contains filtered or unexported fields
}

BindGroupLayout implements hal.BindGroupLayout for OpenGL.

func (*BindGroupLayout) Destroy

func (l *BindGroupLayout) Destroy()

Destroy is a no-op for bind group layouts.

type BindGroupLayoutDescriptor

type BindGroupLayoutDescriptor = hal.BindGroupLayoutDescriptor

Type aliases for hal descriptors

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer implements hal.Buffer for OpenGL.

func (*Buffer) Destroy

func (b *Buffer) Destroy()

Destroy releases the buffer.

type BufferDescriptor

type BufferDescriptor = hal.BufferDescriptor

Type aliases for hal descriptors

type ClearBufferCommand

type ClearBufferCommand struct {
	// contains filtered or unexported fields
}

ClearBufferCommand clears a buffer region.

func (*ClearBufferCommand) Execute

func (c *ClearBufferCommand) Execute(_ *gl.Context)

type ClearColorCommand

type ClearColorCommand struct {
	// contains filtered or unexported fields
}

ClearColorCommand clears a color attachment.

func (*ClearColorCommand) Execute

func (c *ClearColorCommand) Execute(ctx *gl.Context)

type ClearDepthCommand

type ClearDepthCommand struct {
	// contains filtered or unexported fields
}

ClearDepthCommand clears the depth buffer.

func (*ClearDepthCommand) Execute

func (c *ClearDepthCommand) Execute(ctx *gl.Context)

type ClearStencilCommand

type ClearStencilCommand struct {
	// contains filtered or unexported fields
}

ClearStencilCommand clears the stencil buffer.

func (*ClearStencilCommand) Execute

func (c *ClearStencilCommand) Execute(ctx *gl.Context)

type Command

type Command interface {
	Execute(ctx *gl.Context)
}

Command represents a recorded GL command.

type CommandBuffer

type CommandBuffer struct {
	// contains filtered or unexported fields
}

CommandBuffer holds recorded commands for later execution.

func (*CommandBuffer) Destroy

func (c *CommandBuffer) Destroy()

Destroy releases the command buffer resources.

type CommandEncoder

type CommandEncoder struct {
	// contains filtered or unexported fields
}

CommandEncoder implements hal.CommandEncoder for OpenGL. Platform-specific fields are defined in command_<platform>.go files.

func (*CommandEncoder) BeginComputePass

BeginComputePass begins a compute pass.

func (*CommandEncoder) BeginEncoding

func (e *CommandEncoder) BeginEncoding(label string) error

BeginEncoding begins command recording.

func (*CommandEncoder) BeginRenderPass

func (e *CommandEncoder) BeginRenderPass(desc *hal.RenderPassDescriptor) hal.RenderPassEncoder

BeginRenderPass begins a render pass.

func (*CommandEncoder) ClearBuffer

func (e *CommandEncoder) ClearBuffer(buffer hal.Buffer, offset, size uint64)

ClearBuffer clears a buffer region to zero.

func (*CommandEncoder) CopyBufferToBuffer

func (e *CommandEncoder) CopyBufferToBuffer(src, dst hal.Buffer, regions []hal.BufferCopy)

CopyBufferToBuffer copies data between buffers.

func (*CommandEncoder) CopyBufferToTexture

func (e *CommandEncoder) CopyBufferToTexture(src hal.Buffer, dst hal.Texture, regions []hal.BufferTextureCopy)

CopyBufferToTexture copies buffer data to a texture.

func (*CommandEncoder) CopyTextureToBuffer

func (e *CommandEncoder) CopyTextureToBuffer(src hal.Texture, dst hal.Buffer, regions []hal.BufferTextureCopy)

CopyTextureToBuffer copies texture data to a buffer.

func (*CommandEncoder) CopyTextureToTexture

func (e *CommandEncoder) CopyTextureToTexture(src, dst hal.Texture, regions []hal.TextureCopy)

CopyTextureToTexture copies between textures.

func (*CommandEncoder) DiscardEncoding

func (e *CommandEncoder) DiscardEncoding()

DiscardEncoding discards the encoder.

func (*CommandEncoder) EndEncoding

func (e *CommandEncoder) EndEncoding() (hal.CommandBuffer, error)

EndEncoding finishes command recording and returns a command buffer.

func (*CommandEncoder) ResetAll

func (e *CommandEncoder) ResetAll(_ []hal.CommandBuffer)

ResetAll resets command buffers for reuse.

func (*CommandEncoder) TransitionBuffers

func (e *CommandEncoder) TransitionBuffers(_ []hal.BufferBarrier)

TransitionBuffers transitions buffer states.

func (*CommandEncoder) TransitionTextures

func (e *CommandEncoder) TransitionTextures(_ []hal.TextureBarrier)

TransitionTextures transitions texture states.

type CommandEncoderDescriptor

type CommandEncoderDescriptor = hal.CommandEncoderDescriptor

Type aliases for hal descriptors

type ComputePassEncoder

type ComputePassEncoder struct {
	// contains filtered or unexported fields
}

ComputePassEncoder implements hal.ComputePassEncoder for OpenGL.

func (*ComputePassEncoder) Dispatch

func (e *ComputePassEncoder) Dispatch(x, y, z uint32)

Dispatch dispatches compute work.

func (*ComputePassEncoder) DispatchIndirect

func (e *ComputePassEncoder) DispatchIndirect(buffer hal.Buffer, offset uint64)

DispatchIndirect dispatches compute work with GPU-generated parameters.

func (*ComputePassEncoder) End

func (e *ComputePassEncoder) End()

End finishes the compute pass.

func (*ComputePassEncoder) SetBindGroup

func (e *ComputePassEncoder) SetBindGroup(index uint32, group hal.BindGroup, offsets []uint32)

SetBindGroup sets a bind group.

func (*ComputePassEncoder) SetPipeline

func (e *ComputePassEncoder) SetPipeline(pipeline hal.ComputePipeline)

SetPipeline sets the compute pipeline.

type ComputePipeline

type ComputePipeline struct {
	// contains filtered or unexported fields
}

ComputePipeline implements hal.ComputePipeline for OpenGL.

func (*ComputePipeline) Destroy

func (p *ComputePipeline) Destroy()

Destroy releases the compute pipeline.

type ComputePipelineDescriptor

type ComputePipelineDescriptor = hal.ComputePipelineDescriptor

Type aliases for hal descriptors

type CopyBufferCommand

type CopyBufferCommand struct {
	// contains filtered or unexported fields
}

CopyBufferCommand copies between buffers.

func (*CopyBufferCommand) Execute

func (c *CopyBufferCommand) Execute(ctx *gl.Context)

type Device

type Device struct {
	// contains filtered or unexported fields
}

Device implements hal.Device for OpenGL on Linux.

func (*Device) CreateBindGroup

func (d *Device) CreateBindGroup(desc *BindGroupDescriptor) (hal.BindGroup, error)

CreateBindGroup creates a bind group.

func (*Device) CreateBindGroupLayout

func (d *Device) CreateBindGroupLayout(desc *BindGroupLayoutDescriptor) (hal.BindGroupLayout, error)

CreateBindGroupLayout creates a bind group layout.

func (*Device) CreateBuffer

func (d *Device) CreateBuffer(desc *BufferDescriptor) (hal.Buffer, error)

CreateBuffer creates a GPU buffer.

func (*Device) CreateCommandEncoder

func (d *Device) CreateCommandEncoder(_ *CommandEncoderDescriptor) (hal.CommandEncoder, error)

CreateCommandEncoder creates a command encoder.

func (*Device) CreateComputePipeline

func (d *Device) CreateComputePipeline(desc *ComputePipelineDescriptor) (hal.ComputePipeline, error)

CreateComputePipeline creates a compute pipeline.

func (*Device) CreateFence

func (d *Device) CreateFence() (hal.Fence, error)

CreateFence creates a synchronization fence.

func (*Device) CreatePipelineLayout

func (d *Device) CreatePipelineLayout(desc *PipelineLayoutDescriptor) (hal.PipelineLayout, error)

CreatePipelineLayout creates a pipeline layout.

func (*Device) CreateRenderPipeline

func (d *Device) CreateRenderPipeline(desc *RenderPipelineDescriptor) (hal.RenderPipeline, error)

CreateRenderPipeline creates a render pipeline.

func (*Device) CreateSampler

func (d *Device) CreateSampler(desc *SamplerDescriptor) (hal.Sampler, error)

CreateSampler creates a texture sampler.

func (*Device) CreateShaderModule

func (d *Device) CreateShaderModule(desc *ShaderModuleDescriptor) (hal.ShaderModule, error)

CreateShaderModule creates a shader module.

func (*Device) CreateTexture

func (d *Device) CreateTexture(desc *TextureDescriptor) (hal.Texture, error)

CreateTexture creates a GPU texture.

func (*Device) CreateTextureView

func (d *Device) CreateTextureView(texture hal.Texture, desc *TextureViewDescriptor) (hal.TextureView, error)

CreateTextureView creates a view into a texture.

func (*Device) Destroy

func (d *Device) Destroy()

Destroy releases the device.

func (*Device) DestroyBindGroup

func (d *Device) DestroyBindGroup(group hal.BindGroup)

DestroyBindGroup destroys a bind group.

func (*Device) DestroyBindGroupLayout

func (d *Device) DestroyBindGroupLayout(layout hal.BindGroupLayout)

DestroyBindGroupLayout destroys a bind group layout.

func (*Device) DestroyBuffer

func (d *Device) DestroyBuffer(buffer hal.Buffer)

DestroyBuffer destroys a GPU buffer.

func (*Device) DestroyComputePipeline

func (d *Device) DestroyComputePipeline(pipeline hal.ComputePipeline)

DestroyComputePipeline destroys a compute pipeline.

func (*Device) DestroyFence

func (d *Device) DestroyFence(fence hal.Fence)

DestroyFence destroys a fence.

func (*Device) DestroyPipelineLayout

func (d *Device) DestroyPipelineLayout(layout hal.PipelineLayout)

DestroyPipelineLayout destroys a pipeline layout.

func (*Device) DestroyRenderPipeline

func (d *Device) DestroyRenderPipeline(pipeline hal.RenderPipeline)

DestroyRenderPipeline destroys a render pipeline.

func (*Device) DestroySampler

func (d *Device) DestroySampler(sampler hal.Sampler)

DestroySampler destroys a sampler.

func (*Device) DestroyShaderModule

func (d *Device) DestroyShaderModule(module hal.ShaderModule)

DestroyShaderModule destroys a shader module.

func (*Device) DestroyTexture

func (d *Device) DestroyTexture(texture hal.Texture)

DestroyTexture destroys a GPU texture.

func (*Device) DestroyTextureView

func (d *Device) DestroyTextureView(view hal.TextureView)

DestroyTextureView destroys a texture view.

func (*Device) Wait

func (d *Device) Wait(fence hal.Fence, value uint64, timeout time.Duration) (bool, error)

Wait waits for a fence to reach the specified value.

type DispatchCommand

type DispatchCommand struct {
	// contains filtered or unexported fields
}

DispatchCommand dispatches compute work.

func (*DispatchCommand) Execute

func (c *DispatchCommand) Execute(_ *gl.Context)

type DrawCommand

type DrawCommand struct {
	// contains filtered or unexported fields
}

DrawCommand executes a non-indexed draw.

func (*DrawCommand) Execute

func (c *DrawCommand) Execute(ctx *gl.Context)

type DrawIndexedCommand

type DrawIndexedCommand struct {
	// contains filtered or unexported fields
}

DrawIndexedCommand executes an indexed draw.

func (*DrawIndexedCommand) Execute

func (c *DrawIndexedCommand) Execute(ctx *gl.Context)

type Fence

type Fence struct {
	// contains filtered or unexported fields
}

Fence implements hal.Fence using GL sync objects.

func NewFence

func NewFence(glCtx *gl.Context) *Fence

NewFence creates a new fence.

func (*Fence) Destroy

func (f *Fence) Destroy()

Destroy releases fence resources.

func (*Fence) GetValue

func (f *Fence) GetValue() uint64

GetValue returns the current fence value.

func (*Fence) Signal

func (f *Fence) Signal(value uint64)

Signal sets the fence value.

func (*Fence) Wait

func (f *Fence) Wait(value uint64, _ time.Duration) bool

Wait waits for the fence to reach the specified value.

type Instance

type Instance struct{}

Instance implements hal.Instance for the OpenGL backend on Linux.

func (*Instance) CreateSurface

func (i *Instance) CreateSurface(displayHandle, windowHandle uintptr) (hal.Surface, error)

CreateSurface creates an OpenGL surface from window handles. On Linux: displayHandle and windowHandle are platform-specific. For X11: displayHandle is X11 Display*, windowHandle is Window. For Wayland: displayHandle is wl_display*, windowHandle is wl_surface*.

func (*Instance) Destroy

func (i *Instance) Destroy()

Destroy releases the instance resources.

func (*Instance) EnumerateAdapters

func (i *Instance) EnumerateAdapters(surfaceHint hal.Surface) []hal.ExposedAdapter

EnumerateAdapters returns available OpenGL adapters. For OpenGL, there's typically one adapter per display.

type PipelineLayout

type PipelineLayout struct {
	// contains filtered or unexported fields
}

PipelineLayout implements hal.PipelineLayout for OpenGL.

func (*PipelineLayout) Destroy

func (l *PipelineLayout) Destroy()

Destroy is a no-op for pipeline layouts.

type PipelineLayoutDescriptor

type PipelineLayoutDescriptor = hal.PipelineLayoutDescriptor

Type aliases for hal descriptors

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

Queue implements hal.Queue for OpenGL on Linux.

func (*Queue) GetTimestampPeriod

func (q *Queue) GetTimestampPeriod() float32

GetTimestampPeriod returns the timestamp period in nanoseconds.

func (*Queue) Present

func (q *Queue) Present(surface hal.Surface, _ hal.SurfaceTexture) error

Present presents a surface texture to the screen.

func (*Queue) Submit

func (q *Queue) Submit(commandBuffers []hal.CommandBuffer, fence hal.Fence, fenceValue uint64) error

Submit submits command buffers to the GPU.

func (*Queue) WriteBuffer

func (q *Queue) WriteBuffer(buffer hal.Buffer, offset uint64, data []byte)

WriteBuffer writes data to a buffer immediately.

func (*Queue) WriteTexture

func (q *Queue) WriteTexture(dst *hal.ImageCopyTexture, data []byte, layout *hal.ImageDataLayout, size *hal.Extent3D)

WriteTexture writes data to a texture immediately.

type RenderPassEncoder

type RenderPassEncoder struct {
	// contains filtered or unexported fields
}

RenderPassEncoder implements hal.RenderPassEncoder for OpenGL.

func (*RenderPassEncoder) Draw

func (e *RenderPassEncoder) Draw(vertexCount, instanceCount, firstVertex, firstInstance uint32)

Draw draws primitives.

func (*RenderPassEncoder) DrawIndexed

func (e *RenderPassEncoder) DrawIndexed(indexCount, instanceCount, firstIndex uint32, baseVertex int32, firstInstance uint32)

DrawIndexed draws indexed primitives.

func (*RenderPassEncoder) DrawIndexedIndirect

func (e *RenderPassEncoder) DrawIndexedIndirect(buffer hal.Buffer, offset uint64)

DrawIndexedIndirect draws indexed primitives with GPU-generated parameters.

func (*RenderPassEncoder) DrawIndirect

func (e *RenderPassEncoder) DrawIndirect(buffer hal.Buffer, offset uint64)

DrawIndirect draws primitives with GPU-generated parameters.

func (*RenderPassEncoder) End

func (e *RenderPassEncoder) End()

End finishes the render pass.

func (*RenderPassEncoder) ExecuteBundle

func (e *RenderPassEncoder) ExecuteBundle(bundle hal.RenderBundle)

ExecuteBundle executes a pre-recorded render bundle.

func (*RenderPassEncoder) SetBindGroup

func (e *RenderPassEncoder) SetBindGroup(index uint32, group hal.BindGroup, offsets []uint32)

SetBindGroup sets a bind group.

func (*RenderPassEncoder) SetBlendConstant

func (e *RenderPassEncoder) SetBlendConstant(color *types.Color)

SetBlendConstant sets the blend constant.

func (*RenderPassEncoder) SetIndexBuffer

func (e *RenderPassEncoder) SetIndexBuffer(buffer hal.Buffer, format types.IndexFormat, offset uint64)

SetIndexBuffer sets the index buffer.

func (*RenderPassEncoder) SetPipeline

func (e *RenderPassEncoder) SetPipeline(pipeline hal.RenderPipeline)

SetPipeline sets the render pipeline.

func (*RenderPassEncoder) SetScissorRect

func (e *RenderPassEncoder) SetScissorRect(x, y, width, height uint32)

SetScissorRect sets the scissor rectangle.

func (*RenderPassEncoder) SetStencilReference

func (e *RenderPassEncoder) SetStencilReference(ref uint32)

SetStencilReference sets the stencil reference value.

func (*RenderPassEncoder) SetVertexBuffer

func (e *RenderPassEncoder) SetVertexBuffer(slot uint32, buffer hal.Buffer, offset uint64)

SetVertexBuffer sets a vertex buffer.

func (*RenderPassEncoder) SetViewport

func (e *RenderPassEncoder) SetViewport(x, y, width, height, minDepth, maxDepth float32)

SetViewport sets the viewport.

type RenderPipeline

type RenderPipeline struct {
	// contains filtered or unexported fields
}

RenderPipeline implements hal.RenderPipeline for OpenGL.

func (*RenderPipeline) Destroy

func (p *RenderPipeline) Destroy()

Destroy releases the render pipeline.

type RenderPipelineDescriptor

type RenderPipelineDescriptor = hal.RenderPipelineDescriptor

Type aliases for hal descriptors

type Sampler

type Sampler struct {
	// contains filtered or unexported fields
}

Sampler implements hal.Sampler for OpenGL.

func (*Sampler) Destroy

func (s *Sampler) Destroy()

Destroy releases the sampler.

type SamplerDescriptor

type SamplerDescriptor = hal.SamplerDescriptor

Type aliases for hal descriptors

type SetBindGroupCommand

type SetBindGroupCommand struct {
	// contains filtered or unexported fields
}

SetBindGroupCommand binds resources.

func (*SetBindGroupCommand) Execute

func (c *SetBindGroupCommand) Execute(_ *gl.Context)

type SetBlendConstantCommand

type SetBlendConstantCommand struct {
	// contains filtered or unexported fields
}

SetBlendConstantCommand sets blend constant.

func (*SetBlendConstantCommand) Execute

func (c *SetBlendConstantCommand) Execute(_ *gl.Context)

type SetIndexBufferCommand

type SetIndexBufferCommand struct {
	// contains filtered or unexported fields
}

SetIndexBufferCommand binds an index buffer.

func (*SetIndexBufferCommand) Execute

func (c *SetIndexBufferCommand) Execute(ctx *gl.Context)

type SetPipelineStateCommand

type SetPipelineStateCommand struct {
	// contains filtered or unexported fields
}

SetPipelineStateCommand sets pipeline state (culling, depth, etc.).

func (*SetPipelineStateCommand) Execute

func (c *SetPipelineStateCommand) Execute(ctx *gl.Context)

type SetScissorCommand

type SetScissorCommand struct {
	// contains filtered or unexported fields
}

SetScissorCommand sets the scissor rectangle.

func (*SetScissorCommand) Execute

func (c *SetScissorCommand) Execute(ctx *gl.Context)

type SetStencilRefCommand

type SetStencilRefCommand struct {
	// contains filtered or unexported fields
}

SetStencilRefCommand sets stencil reference.

func (*SetStencilRefCommand) Execute

func (c *SetStencilRefCommand) Execute(_ *gl.Context)

type SetVertexBufferCommand

type SetVertexBufferCommand struct {
	// contains filtered or unexported fields
}

SetVertexBufferCommand binds a vertex buffer.

func (*SetVertexBufferCommand) Execute

func (c *SetVertexBufferCommand) Execute(ctx *gl.Context)

type SetViewportCommand

type SetViewportCommand struct {
	// contains filtered or unexported fields
}

SetViewportCommand sets the viewport.

func (*SetViewportCommand) Execute

func (c *SetViewportCommand) Execute(ctx *gl.Context)

type ShaderModule

type ShaderModule struct {
	// contains filtered or unexported fields
}

ShaderModule implements hal.ShaderModule for OpenGL.

func (*ShaderModule) Destroy

func (m *ShaderModule) Destroy()

Destroy releases the shader module.

type ShaderModuleDescriptor

type ShaderModuleDescriptor = hal.ShaderModuleDescriptor

Type aliases for hal descriptors

type Surface

type Surface struct {
	// contains filtered or unexported fields
}

Surface implements hal.Surface for OpenGL on Linux.

func (*Surface) AcquireTexture

func (s *Surface) AcquireTexture(_ hal.Fence) (*hal.AcquiredSurfaceTexture, error)

AcquireTexture returns the next surface texture for rendering.

func (*Surface) Configure

func (s *Surface) Configure(_ hal.Device, config *hal.SurfaceConfiguration) error

Configure configures the surface for presentation.

Returns hal.ErrZeroArea if width or height is zero. This commonly happens when the window is minimized or not yet fully visible. Wait until the window has valid dimensions before calling Configure again.

func (*Surface) Destroy

func (s *Surface) Destroy()

Destroy releases the surface resources.

func (*Surface) DiscardTexture

func (s *Surface) DiscardTexture(_ hal.SurfaceTexture)

DiscardTexture discards a previously acquired texture.

func (*Surface) GetAdapterInfo

func (s *Surface) GetAdapterInfo() hal.ExposedAdapter

GetAdapterInfo returns adapter information from this surface's GL context.

func (*Surface) Unconfigure

func (s *Surface) Unconfigure(_ hal.Device)

Unconfigure marks the surface as unconfigured.

type SurfaceTexture

type SurfaceTexture struct {
	// contains filtered or unexported fields
}

SurfaceTexture implements hal.SurfaceTexture for OpenGL. It represents the default framebuffer.

func (*SurfaceTexture) Destroy

func (t *SurfaceTexture) Destroy()

Destroy is a no-op for surface textures.

type Texture

type Texture struct {
	// contains filtered or unexported fields
}

Texture implements hal.Texture for OpenGL.

func (*Texture) Destroy

func (t *Texture) Destroy()

Destroy releases the texture.

type TextureDescriptor

type TextureDescriptor = hal.TextureDescriptor

Type aliases for hal descriptors

type TextureView

type TextureView struct {
	// contains filtered or unexported fields
}

TextureView implements hal.TextureView for OpenGL.

func (*TextureView) Destroy

func (v *TextureView) Destroy()

Destroy is a no-op for texture views in OpenGL.

type TextureViewDescriptor

type TextureViewDescriptor = hal.TextureViewDescriptor

Type aliases for hal descriptors

type UseProgramCommand

type UseProgramCommand struct {
	// contains filtered or unexported fields
}

UseProgramCommand activates a shader program.

func (*UseProgramCommand) Execute

func (c *UseProgramCommand) Execute(ctx *gl.Context)

Directories

Path Synopsis
Package egl provides EGL (EGL) context management for OpenGL ES on Linux.
Package egl provides EGL (EGL) context management for OpenGL ES on Linux.
Package gl provides OpenGL constants and types for the GLES backend.
Package gl provides OpenGL constants and types for the GLES backend.
Package wgl provides Windows OpenGL (WGL) context management.
Package wgl provides Windows OpenGL (WGL) context management.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL