Rename programColorMatrix -> programFragmentShader

This commit is contained in:
Hajime Hoshi 2015-01-12 18:34:02 +09:00
parent 02dbeef1b9
commit 243208b849
5 changed files with 33 additions and 19 deletions

View File

@ -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>

View File

@ -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]++
} }
} }

View File

@ -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

View File

@ -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)

View File

@ -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;