mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-02-20 15:00:08 +01:00
Add Monochrome
This commit is contained in:
parent
97550279ee
commit
8860d315ca
60
example/game/monochrome/monochrome.go
Normal file
60
example/game/monochrome/monochrome.go
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package monochrome
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hajimehoshi/go.ebiten/graphics"
|
||||||
|
"github.com/hajimehoshi/go.ebiten/graphics/matrix"
|
||||||
|
"image"
|
||||||
|
"image/color"
|
||||||
|
_ "image/png"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Monochrome struct {
|
||||||
|
ebitenTexture graphics.Texture
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() *Monochrome {
|
||||||
|
return &Monochrome{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) ScreenWidth() int {
|
||||||
|
return 256
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) ScreenHeight() int {
|
||||||
|
return 240
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) Fps() int {
|
||||||
|
return 60
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) Init(tf graphics.TextureFactory) {
|
||||||
|
file, err := os.Open("ebiten.png")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
img, _, err := image.Decode(file)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
if game.ebitenTexture, err = tf.NewTextureFromImage(img); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) Update() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (game *Monochrome) Draw(g graphics.GraphicsContext, offscreen graphics.Texture) {
|
||||||
|
g.Fill(&color.RGBA{R: 128, G: 128, B: 255, A: 255})
|
||||||
|
|
||||||
|
geometryMatrix := matrix.IdentityGeometry()
|
||||||
|
tx := game.ScreenWidth() / 2 - game.ebitenTexture.Width / 2
|
||||||
|
ty := game.ScreenHeight() / 2 - game.ebitenTexture.Height / 2
|
||||||
|
geometryMatrix.Translate(float64(tx), float64(ty))
|
||||||
|
g.DrawTexture(game.ebitenTexture.ID,
|
||||||
|
geometryMatrix, matrix.Monochrome())
|
||||||
|
}
|
@ -18,6 +18,7 @@ package main
|
|||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"github.com/hajimehoshi/go.ebiten"
|
"github.com/hajimehoshi/go.ebiten"
|
||||||
|
"github.com/hajimehoshi/go.ebiten/example/game/monochrome"
|
||||||
"github.com/hajimehoshi/go.ebiten/example/game/rects"
|
"github.com/hajimehoshi/go.ebiten/example/game/rects"
|
||||||
"github.com/hajimehoshi/go.ebiten/example/game/rotating"
|
"github.com/hajimehoshi/go.ebiten/example/game/rotating"
|
||||||
"github.com/hajimehoshi/go.ebiten/example/game/sprites"
|
"github.com/hajimehoshi/go.ebiten/example/game/sprites"
|
||||||
@ -89,6 +90,8 @@ func main() {
|
|||||||
|
|
||||||
var gm ebiten.Game
|
var gm ebiten.Game
|
||||||
switch gameName {
|
switch gameName {
|
||||||
|
case "monochrome":
|
||||||
|
gm = monochrome.New()
|
||||||
case "rects":
|
case "rects":
|
||||||
gm = rects.New()
|
gm = rects.New()
|
||||||
case "rotating":
|
case "rotating":
|
||||||
|
@ -38,3 +38,17 @@ func (matrix *Color) element(i, j int) float64 {
|
|||||||
func (matrix *Color) setElement(i, j int, element float64) {
|
func (matrix *Color) setElement(i, j int, element float64) {
|
||||||
matrix.Elements[i][j] = element
|
matrix.Elements[i][j] = element
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Monochrome() Color {
|
||||||
|
const r float64 = 6968.0 / 32768.0
|
||||||
|
const g float64 = 23434.0 / 32768.0
|
||||||
|
const b float64 = 2366.0 / 32768.0
|
||||||
|
return Color{
|
||||||
|
[colorDim - 1][colorDim]float64{
|
||||||
|
{r, g, b, 0, 0},
|
||||||
|
{r, g, b, 0, 0},
|
||||||
|
{r, g, b, 0, 0},
|
||||||
|
{0, 0, 0, 1, 0},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -293,10 +293,10 @@ func (context *GraphicsContext) setShaderProgram(
|
|||||||
}
|
}
|
||||||
|
|
||||||
glColorMatrix := [...]float32{
|
glColorMatrix := [...]float32{
|
||||||
e[0][0], e[0][1], e[0][2], e[0][3],
|
e[0][0], e[1][0], e[2][0], e[3][0],
|
||||||
e[1][0], e[1][1], e[1][2], e[1][3],
|
e[0][1], e[1][1], e[2][1], e[3][1],
|
||||||
e[2][0], e[2][1], e[2][2], e[2][3],
|
e[0][2], e[1][2], e[2][2], e[3][2],
|
||||||
e[3][0], e[3][1], e[3][2], e[3][3],
|
e[0][3], e[1][3], e[2][3], e[3][3],
|
||||||
}
|
}
|
||||||
C.glUniformMatrix4fv(getUniformLocation(program, "color_matrix"),
|
C.glUniformMatrix4fv(getUniformLocation(program, "color_matrix"),
|
||||||
1, C.GL_FALSE, (*C.GLfloat)(&glColorMatrix[0]))
|
1, C.GL_FALSE, (*C.GLfloat)(&glColorMatrix[0]))
|
||||||
|
Loading…
Reference in New Issue
Block a user