mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 10:48:53 +01:00
Rename programColorMatrix -> programFragmentShader
This commit is contained in:
parent
02dbeef1b9
commit
243208b849
@ -42,7 +42,7 @@ pre {
|
|||||||
<h2>Features</h2>
|
<h2>Features</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>2D Graphics</li>
|
<li>2D Graphics</li>
|
||||||
<li>Input (Mouse, Keyboard)</li>
|
<li>Input (Mouse, Keyboard, Gamepad)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Example</h2>
|
<h2>Example</h2>
|
||||||
|
@ -19,7 +19,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Input struct {
|
type Input struct {
|
||||||
states [256]int
|
keyStates [256]int
|
||||||
|
gamepadButtonStates [4]int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewInput() *Input {
|
func NewInput() *Input {
|
||||||
@ -27,15 +28,28 @@ func NewInput() *Input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) StateForKey(key ebiten.Key) int {
|
func (i *Input) StateForKey(key ebiten.Key) int {
|
||||||
return i.states[key]
|
return i.keyStates[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Input) StateForGamepadButton(button ebiten.GamepadButton) int {
|
||||||
|
return i.gamepadButtonStates[button]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) Update() {
|
func (i *Input) Update() {
|
||||||
for key := range i.states {
|
for key := range i.keyStates {
|
||||||
if !ebiten.IsKeyPressed(ebiten.Key(key)) {
|
if !ebiten.IsKeyPressed(ebiten.Key(key)) {
|
||||||
i.states[key] = 0
|
i.keyStates[key] = 0
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
i.states[key]++
|
i.keyStates[key]++
|
||||||
|
}
|
||||||
|
|
||||||
|
const gamepadID = 0
|
||||||
|
for b := range i.gamepadButtonStates {
|
||||||
|
if !ebiten.IsGamepadButtonPressed(gamepadID, ebiten.GamepadButton(b)) {
|
||||||
|
i.gamepadButtonStates[b] = 0
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
i.gamepadButtonStates[b]++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ func DrawTexture(c *opengl.Context, texture opengl.Texture, projectionMatrix *[4
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
program := useProgramColorMatrix(c, glMatrix(projectionMatrix), geo, color)
|
program := useProgramTexture(c, glMatrix(projectionMatrix), geo, color)
|
||||||
|
|
||||||
// We don't have to call gl.ActiveTexture here: GL_TEXTURE0 is the default active texture
|
// We don't have to call gl.ActiveTexture here: GL_TEXTURE0 is the default active texture
|
||||||
// See also: https://www.opengl.org/sdk/docs/man2/xhtml/glActiveTexture.xml
|
// See also: https://www.opengl.org/sdk/docs/man2/xhtml/glActiveTexture.xml
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
"github.com/hajimehoshi/ebiten/internal/opengl"
|
"github.com/hajimehoshi/ebiten/internal/opengl"
|
||||||
)
|
)
|
||||||
|
|
||||||
var programColorMatrix opengl.Program
|
var programTexture opengl.Program
|
||||||
|
|
||||||
func initialize(c *opengl.Context) error {
|
func initialize(c *opengl.Context) error {
|
||||||
const size = 10000
|
const size = 10000
|
||||||
@ -30,17 +30,17 @@ func initialize(c *opengl.Context) error {
|
|||||||
}
|
}
|
||||||
defer c.DeleteShader(shaderVertexNative)
|
defer c.DeleteShader(shaderVertexNative)
|
||||||
|
|
||||||
shaderColorMatrixNative, err := c.NewShader(c.FragmentShader, shader(c, shaderColorMatrix))
|
shaderFragmentTextureNative, err := c.NewShader(c.FragmentShader, shader(c, shaderFragmentTexture))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer c.DeleteShader(shaderColorMatrixNative)
|
defer c.DeleteShader(shaderFragmentTextureNative)
|
||||||
|
|
||||||
shaders := []opengl.Shader{
|
shaders := []opengl.Shader{
|
||||||
shaderVertexNative,
|
shaderVertexNative,
|
||||||
shaderColorMatrixNative,
|
shaderFragmentTextureNative,
|
||||||
}
|
}
|
||||||
programColorMatrix, err = c.NewProgram(shaders)
|
programTexture, err = c.NewProgram(shaders)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -64,12 +64,12 @@ func initialize(c *opengl.Context) error {
|
|||||||
|
|
||||||
var lastProgram opengl.Program
|
var lastProgram opengl.Program
|
||||||
|
|
||||||
func useProgramColorMatrix(c *opengl.Context, projectionMatrix []float32, geo Matrix, color Matrix) opengl.Program {
|
func useProgramTexture(c *opengl.Context, projectionMatrix []float32, geo Matrix, color Matrix) opengl.Program {
|
||||||
if lastProgram != programColorMatrix {
|
if lastProgram != programTexture {
|
||||||
c.UseProgram(programColorMatrix)
|
c.UseProgram(programTexture)
|
||||||
lastProgram = programColorMatrix
|
lastProgram = programTexture
|
||||||
}
|
}
|
||||||
program := programColorMatrix
|
program := programTexture
|
||||||
|
|
||||||
c.UniformFloats(program, "projection_matrix", projectionMatrix)
|
c.UniformFloats(program, "projection_matrix", projectionMatrix)
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ type shaderId int
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
shaderVertex shaderId = iota
|
shaderVertex shaderId = iota
|
||||||
shaderColorMatrix
|
shaderFragmentTexture
|
||||||
)
|
)
|
||||||
|
|
||||||
func shader(c *opengl.Context, id shaderId) string {
|
func shader(c *opengl.Context, id shaderId) string {
|
||||||
@ -48,7 +48,7 @@ void main(void) {
|
|||||||
gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 0, 1);
|
gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 0, 1);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
shaderColorMatrix: `
|
shaderFragmentTexture: `
|
||||||
uniform lowp sampler2D texture;
|
uniform lowp sampler2D texture;
|
||||||
uniform lowp mat4 color_matrix;
|
uniform lowp mat4 color_matrix;
|
||||||
uniform lowp vec4 color_matrix_translation;
|
uniform lowp vec4 color_matrix_translation;
|
||||||
|
Loading…
Reference in New Issue
Block a user