Beispiel #1
0
// Draw : wrap the openGl draw method and report fps info
func (s *BaseScene) Draw() {

	if s.update {
		// TODO: remove hard coded resolution
		// gl.BindTexture(gl.TEXTURE_2D, s.spriteSheet.textureId)
		Opengl.BindBuffers()
		s.update = false
	}

	Opengl.Draw()

	// calc fps
	if (int32(time.Now().Unix()) - s.timestart) >= 1 {
		fmt.Printf("FPS: %d \n", s.fps)
		s.fps = 0
		s.timestart = int32(time.Now().Unix())
	}

	s.fps = s.fps + 1
}
Beispiel #2
0
func (s *BaseScene) Draw() {

	if len(s.entities) == 0 {
		fmt.Println("No Sprites to draw.")
		return
	}

	idx := uint32(0)

	vertexInfo := &Opengl.OpenGLVertexInfo{}

	// clone := &Opengl.OpenGLVertexInfo{}
	for _, v := range s.spriteDraw {

		//TODO: move this to sprite class and use interface instead.. what if i have "shape"
		// fmt.Printf("Img name: %s\n", k)
		// glInfo := v.getGLVertexInfo()
		w, h := v.GetImageSection().GetDimensions()

		for i := 0; i < 4; i++ {
			vertexInfo.Translations = append(vertexInfo.Translations, float32(v.x), float32(v.y), 0)
			vertexInfo.Rotations = append(vertexInfo.Rotations, 0, 0, 1, v.rot)
			vertexInfo.Scales = append(vertexInfo.Scales, v.xS, v.yS, 0)
			vertexInfo.Colors = append(vertexInfo.Colors, v.r, v.g, v.b, v.a)

		}

		vertexInfo.Vertices = append(vertexInfo.Vertices, -0.5*w, 0.5*h, 1.0, 0.5*w, 0.5*h, 1.0, 0.5*w, -0.5*h, 1.0, -0.5*w, -0.5*h, 1.0)

		// TODO: maybe put this inside struct to store since this will really never change
		x, y := s.spriteSheet.GetUVFromPosition(v.GetImageSection().BottomLeft())
		vertexInfo.Uvs = append(vertexInfo.Uvs, x, y)
		x, y = s.spriteSheet.GetUVFromPosition(v.GetImageSection().BottomRight())
		vertexInfo.Uvs = append(vertexInfo.Uvs, x, y)
		x, y = s.spriteSheet.GetUVFromPosition(v.GetImageSection().TopRight())
		vertexInfo.Uvs = append(vertexInfo.Uvs, x, y)
		x, y = s.spriteSheet.GetUVFromPosition(v.GetImageSection().TopLeft())
		vertexInfo.Uvs = append(vertexInfo.Uvs, x, y)

		vertexInfo.Elements = append(vertexInfo.Elements, uint32(idx*4), uint32(idx*4+1), uint32(idx*4+2), uint32(idx*4), uint32(idx*4+2), uint32(idx*4+3))

		// glInfo.AdjustElements(idx)

		// idx += 4
		// clone.Append(glInfo)
		idx = idx + 1
	}

	// vertexInfo.Print()
	Opengl.BindBuffers(vertexInfo)

	gl.BindTexture(gl.TEXTURE_2D, s.spriteSheet.textureId)

	Opengl.Draw(vertexInfo)

	Opengl.Cleanup()

	// calc fps
	if (int32(time.Now().Unix()) - s.timestart) >= 1 {
		fmt.Printf("FPS: %d \n", s.fps)
		s.fps = 0
		s.timestart = int32(time.Now().Unix())

	}

	s.fps = s.fps + 1

}