add texture
This commit is contained in:
parent
df7d8a3ca2
commit
ff30a4d2b2
|
@ -0,0 +1,49 @@
|
|||
package pixelgl
|
||||
|
||||
import "github.com/go-gl/gl/v3.3-core/gl"
|
||||
|
||||
// Texture is an OpenGL texture.
|
||||
type Texture struct {
|
||||
parent BeginEnder
|
||||
tex uint32
|
||||
}
|
||||
|
||||
// NewTexture creates a new texture with the specified width and height.
|
||||
// The pixels must be a sequence of RGBA values.
|
||||
func NewTexture(parent BeginEnder, width, height int, pixels []uint8) *Texture {
|
||||
texture := &Texture{parent: parent}
|
||||
Do(func() {
|
||||
gl.GenTextures(1, &texture.tex)
|
||||
gl.BindTexture(gl.TEXTURE_2D, texture.tex)
|
||||
gl.TexImage2D(
|
||||
gl.TEXTURE_2D,
|
||||
0,
|
||||
gl.RGBA,
|
||||
int32(width),
|
||||
int32(height),
|
||||
0,
|
||||
gl.RGBA,
|
||||
gl.UNSIGNED_BYTE,
|
||||
gl.Ptr(pixels),
|
||||
)
|
||||
gl.GenerateMipmap(gl.TEXTURE_2D)
|
||||
gl.BindTexture(gl.TEXTURE_2D, 0)
|
||||
})
|
||||
return texture
|
||||
}
|
||||
|
||||
// Begin binds a texture.
|
||||
func (t *Texture) Begin() {
|
||||
t.parent.Begin()
|
||||
Do(func() {
|
||||
gl.BindTexture(gl.TEXTURE_2D, t.tex)
|
||||
})
|
||||
}
|
||||
|
||||
// End unbinds a texture.
|
||||
func (t *Texture) End() {
|
||||
Do(func() {
|
||||
gl.BindTexture(gl.TEXTURE_2D, 0)
|
||||
})
|
||||
t.parent.End()
|
||||
}
|
Loading…
Reference in New Issue