mirror of
https://github.com/Kugelschieber/go-game.git
synced 2026-01-18 06:40:28 +00:00
Removed shader, added 3D rendering (no demo yet, coming next), started bitmap font rendering, a few fixes and improvements.
This commit is contained in:
29
sprite.go
29
sprite.go
@@ -15,19 +15,6 @@ type Sprite struct {
|
||||
*Tex
|
||||
}
|
||||
|
||||
// The sprite renderer is a system rendering sprites.
|
||||
// It has a 2D position componente, to move all sprites at once.
|
||||
type SpriteRenderer struct {
|
||||
Pos2D
|
||||
|
||||
Shader *Shader
|
||||
Camera *Camera
|
||||
|
||||
sprites []Sprite
|
||||
index, vertex, texCoord *VBO
|
||||
vao *VAO
|
||||
}
|
||||
|
||||
// Creates a new sprite with given texture.
|
||||
func NewSprite(tex *Tex) *Sprite {
|
||||
sprite := &Sprite{}
|
||||
@@ -43,6 +30,19 @@ func NewSprite(tex *Tex) *Sprite {
|
||||
return sprite
|
||||
}
|
||||
|
||||
// The sprite renderer is a system rendering sprites.
|
||||
// It has a 2D position component, to move all sprites at once.
|
||||
type SpriteRenderer struct {
|
||||
Pos2D
|
||||
|
||||
Shader *Shader
|
||||
Camera *Camera
|
||||
|
||||
sprites []Sprite
|
||||
index, vertex, texCoord *VBO
|
||||
vao *VAO
|
||||
}
|
||||
|
||||
// Creates a new sprite renderer using given shader and camera.
|
||||
// If shader and/or camera are nil, the default one will be used.
|
||||
func NewSpriteRenderer(shader *Shader, camera *Camera, flip bool) *SpriteRenderer {
|
||||
@@ -132,7 +132,7 @@ func (s *SpriteRenderer) GetName() string {
|
||||
return sprite_renderer_name
|
||||
}
|
||||
|
||||
// Renders sprites.
|
||||
// Render sprites.
|
||||
func (s *SpriteRenderer) Update(delta float64) {
|
||||
s.Shader.Bind()
|
||||
s.Shader.SendMat3(Default_shader_2D_ortho, *MultMat3(s.Camera.CalcOrtho(), s.CalcModel()))
|
||||
@@ -147,6 +147,7 @@ func (s *SpriteRenderer) Update(delta float64) {
|
||||
|
||||
s.Shader.SendMat3(Default_shader_2D_model, *s.sprites[i].CalcModel())
|
||||
|
||||
// prevent texture switching when not neccessary
|
||||
if tid != s.sprites[i].Tex.GetId() {
|
||||
tid = s.sprites[i].Tex.GetId()
|
||||
s.sprites[i].Tex.Bind()
|
||||
|
||||
Reference in New Issue
Block a user