ebiten/internal/graphicsdriver/graphics.go
2022-03-26 20:09:34 +09:00

107 lines
2.7 KiB
Go

// Copyright 2018 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package graphicsdriver
import (
"errors"
"github.com/hajimehoshi/ebiten/v2/internal/graphics"
"github.com/hajimehoshi/ebiten/v2/internal/shaderir"
)
type Region struct {
X float32
Y float32
Width float32
Height float32
}
const (
InvalidImageID = 0
InvalidShaderID = 0
)
type ColorM interface {
IsIdentity() bool
At(i, j int) float32
Elements(body *[16]float32, translate *[4]float32)
}
type Graphics interface {
Initialize() error
Begin() error
End(present bool) error
SetTransparent(transparent bool)
SetVertices(vertices []float32, indices []uint16) error
NewImage(width, height int) (Image, error)
NewScreenFramebufferImage(width, height int) (Image, error)
SetVsyncEnabled(enabled bool)
SetFullscreen(fullscreen bool)
FramebufferYDirection() YDirection
NDCYDirection() YDirection
NeedsRestoring() bool
NeedsClearingScreen() bool
IsGL() bool
IsDirectX() bool
HasHighPrecisionFloat() bool
MaxImageSize() int
NewShader(program *shaderir.Program) (Shader, error)
// DrawTriangles draws an image onto another image with the given parameters.
//
// uniforms represents a colletion of uniform variables. The values must be one of these types:
//
// * float32
// * []float32
DrawTriangles(dst ImageID, srcs [graphics.ShaderImageNum]ImageID, offsets [graphics.ShaderImageNum - 1][2]float32, shader ShaderID, indexLen int, indexOffset int, mode CompositeMode, colorM ColorM, filter Filter, address Address, dstRegion, srcRegion Region, uniforms [][]float32, evenOdd bool) error
}
// GraphicsNotReady represents that the graphics driver is not ready for recovering from the context lost.
var GraphicsNotReady = errors.New("graphics not ready")
type Image interface {
ID() ImageID
Dispose()
IsInvalidated() bool
ReadPixels(buf []byte) error
ReplacePixels(args []*ReplacePixelsArgs) error
}
type ImageID int
type ReplacePixelsArgs struct {
Pixels []byte
Mask []byte
X int
Y int
Width int
Height int
}
type YDirection int
const (
Upward YDirection = iota
Downward
)
type Shader interface {
ID() ShaderID
Dispose()
}
type ShaderID int