func loadTexture(glctx gl.Context) { a, err := asset.Open("key.jpeg") if err != nil { log.Fatal(err) } defer a.Close() img, _, err := image.Decode(a) if err != nil { log.Fatal(err) } rect := img.Bounds() rgba := image.NewRGBA(rect) draw.Draw(rgba, rect, img, rect.Min, draw.Src) tex := glctx.CreateTexture() glctx.ActiveTexture(gl.TEXTURE0) glctx.BindTexture(gl.TEXTURE_2D, tex) glctx.TexImage2D(gl.TEXTURE_2D, 0, 859, 610, gl.RGBA, gl.UNSIGNED_BYTE, rgba.Pix) glctx.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR) glctx.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR) glctx.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE) glctx.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE) glctx.ActiveTexture(gl.TEXTURE0) glctx.BindTexture(gl.TEXTURE_2D, tex) glctx.TexImage2D( gl.TEXTURE_2D, 0, rect.Max.X-rect.Min.X, rect.Max.Y-rect.Min.Y, gl.RGBA, gl.UNSIGNED_BYTE, rgba.Pix) }
// TODO pass in an actual Texture ... func NewTextureBuffer(ctx gl.Context, width, height int) *TextureFramebuffer { buf := &TextureFramebuffer{w: width, h: height} buf.fbo = Framebuffer{ctx.CreateFramebuffer()} buf.tex = Texture{ctx.CreateTexture()} buf.def = TextureDef(0, width, height, gl.RGBA, nil) buf.filter = TextureFilter(gl.LINEAR, gl.LINEAR) buf.wrap = TextureWrap(gl.REPEAT, gl.REPEAT) buf.withtex = FramebufferWithTex(buf.tex, 0, buf.def, buf.filter, buf.wrap) return buf }
func (tex *Texture) Create(ctx gl.Context) { tex.Texture = ctx.CreateTexture() }