本文整理汇总了Golang中github.com/go-gl/gl.GenTexture函数的典型用法代码示例。如果您正苦于以下问题:Golang GenTexture函数的具体用法?Golang GenTexture怎么用?Golang GenTexture使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GenTexture函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: loadFont
// loadFont loads the given font data. This does not deal with font scaling.
// Scaling should be handled by the independent Bitmap/Truetype loaders.
// We therefore expect the supplied image and charset to already be adjusted
// to the correct font scale.
//
// The image should hold a sprite sheet, defining the graphical layout for
// every glyph. The config describes font metadata.
func loadFont(img *image.RGBA, config *FontConfig) (f *Font, err error) {
f = new(Font)
f.Config = config
// Resize image to next power-of-two.
img = glh.Pow2Image(img).(*image.RGBA)
ib := img.Bounds()
f.Width = ib.Dx()
f.Height = ib.Dy()
// Create the texture itself. It will contain all glyphs.
// Individual glyph-quads display a subset of this texture.
f.Texture = gl.GenTexture()
f.Texture.Bind(gl.TEXTURE_2D)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, ib.Dx(), ib.Dy(), 0,
gl.RGBA, gl.UNSIGNED_BYTE, img.Pix)
// file, err := os.Create("font.png")
// if err != nil {
// log.Fatal(err)
// }
// err = png.Encode(file, img)
// if err != nil {
// log.Fatal(err)
// }
return
}
示例2: Init
func (v *Video) Init(w int, h int) {
var err error
if err = glfw.Init(); err != nil {
log.Fatal(err)
}
glfw.OpenWindowHint(glfw.WindowNoResize, gl.TRUE)
if err = glfw.OpenWindow(w, h, 8, 8, 8, 0, 24, 0, glfw.Windowed); err != nil {
log.Fatal(err)
}
if gl.Init() != 0 {
log.Fatal("ummm... hmmm")
}
glfw.SetWindowSizeCallback(resize)
gl.Enable(gl.TEXTURE_2D)
resize(w, h)
v.Texture = gl.GenTexture()
}
示例3: NewFramebuffer
// Creates a new Framebuffer.
func NewFramebuffer(w int, h int) (fb *Framebuffer, err error) {
var (
buffer gl.Framebuffer
texture gl.Texture
)
buffer = gl.GenFramebuffer()
buffer.Bind()
texture = gl.GenTexture()
texture.Bind(gl.TEXTURE_2D)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, nil)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.FramebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0)
gl.DrawBuffer(gl.COLOR_ATTACHMENT0)
if gl.CheckFramebufferStatus(gl.FRAMEBUFFER) != gl.FRAMEBUFFER_COMPLETE {
err = fmt.Errorf("Framebuffer could not be set up")
return
}
fb = &Framebuffer{
Buffer: buffer,
Texture: texture,
Width: w,
Height: h,
}
return
}
示例4: createTexture
func createTexture(r io.Reader) (gl.Texture, error) {
img, err := png.Decode(r)
if err != nil {
return gl.Texture(0), err
}
rgbaImg, ok := img.(*image.NRGBA)
if !ok {
return gl.Texture(0), errors.New("texture must be an NRGBA image")
}
textureId := gl.GenTexture()
textureId.Bind(gl.TEXTURE_2D)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
// flip image: first pixel is lower left corner
imgWidth, imgHeight := img.Bounds().Dx(), img.Bounds().Dy()
data := make([]byte, imgWidth*imgHeight*4)
lineLen := imgWidth * 4
dest := len(data) - lineLen
for src := 0; src < len(rgbaImg.Pix); src += rgbaImg.Stride {
copy(data[dest:dest+lineLen], rgbaImg.Pix[src:src+rgbaImg.Stride])
dest -= lineLen
}
gl.TexImage2D(gl.TEXTURE_2D, 0, 4, imgWidth, imgHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, data)
return textureId, nil
}
示例5: imageAlpha
func imageAlpha(pix []byte, width, height int) (*Sampler2D, error) {
s := &Sampler2D{
tex: gl.GenTexture(),
}
s.bind()
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.R8, width, height, 0, gl.RED, gl.UNSIGNED_BYTE, pix)
return s, nil
}
示例6: NewTexture
// Create a new texture, initialize it to have a `gl.LINEAR` filter and use
// `gl.CLAMP_TO_EDGE`.
func NewTexture(w, h int) *Texture {
texture := &Texture{gl.GenTexture(), w, h}
With(texture, func() {
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R, gl.CLAMP_TO_EDGE)
})
return texture
}
示例7: loadTile
func (rm *ResourceManager) loadTile(name string) (*Bitmap, bool) {
fname, _ := filepath.Abs(path.Join("resources", name))
var tex gl.Texture
allegro.RunInThread(func() {
tex = gl.GenTexture()
tex.Bind(gl.TEXTURE_2D)
glfw.LoadTexture2D(fname, 0)
})
bmp := Bitmap{tex, 0, 0, DEFAULT_TILE_WIDTH, DEFAULT_TILE_HEIGHT}
rm.tileBmps[name] = bmp
return &bmp, true
}
示例8: getGLTexture
func getGLTexture(img image.Image, smoothing int) (gltexture gl.Texture, err error) {
var data *bytes.Buffer
if data, err = encodeTGA("texture", img); err != nil {
return
}
gltexture = gl.GenTexture()
gltexture.Bind(gl.TEXTURE_2D)
if !glfw.LoadMemoryTexture2D(data.Bytes(), 0) {
err = fmt.Errorf("Failed to load texture")
return
}
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, smoothing)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, smoothing)
return
}
示例9: MakeTextureFromTGA
func MakeTextureFromTGA(fname string) gl.Texture {
tex := gl.GenTexture()
tex.Bind(gl.TEXTURE_2D)
glfw.LoadTexture2D(fname, 0)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR)
gl.GenerateMipmap(gl.TEXTURE_2D)
// glh.OpenGLSentinel() // check for errors
return tex
}
示例10: LoadTexture
func (self *OpenGLRenderer) LoadTexture(texture *render.Texture) gl.Texture {
glTexture := gl.GenTexture()
glTexture.Bind(gl.TEXTURE_2D)
defer glTexture.Unbind(gl.TEXTURE_2D)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR)
self.glTexImage2D(gl.TEXTURE_2D, texture)
gl.GenerateMipmap(gl.TEXTURE_2D)
return glTexture
}
示例11: initTexture2
func initTexture2(filename string) gl.Texture {
img, err := glfw.ReadImage(filename+".tga", glfw.NoRescaleBit)
if err != nil {
panic(err)
}
rt := gl.GenTexture()
gl.Enable(gl.TEXTURE_2D)
rt.Bind(gl.TEXTURE_2D)
gl.TexEnvf(gl.TEXTURE_ENV, gl.TEXTURE_ENV_MODE, gl.MODULATE)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
// gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
// gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, img.Width(), img.Height(), 0, gl.RGBA, gl.UNSIGNED_BYTE, img.Data())
fmt.Println(filename, img.Width(), img.Height())
return rt
}
示例12: Init
func (v *Video) Init(t <-chan []uint32, ft chan bool, n string) chan [2]int {
v.tick = t
v.frametick = ft
v.resize = make(chan [2]int)
if sdl.Init(sdl.INIT_VIDEO|sdl.INIT_JOYSTICK|sdl.INIT_AUDIO) != 0 {
log.Fatal(sdl.GetError())
}
v.screen = sdl.SetVideoMode(512, 480, 32, sdl.OPENGL|sdl.RESIZABLE)
if v.screen == nil {
log.Fatal(sdl.GetError())
}
sdl.WM_SetCaption(fmt.Sprintf("Fergulator - %s", n), "")
if gl.Init() != 0 {
panic(sdl.GetError())
}
gl.Enable(gl.TEXTURE_2D)
v.Reshape(int(v.screen.W), int(v.screen.H))
v.tex = gl.GenTexture()
joy = make([]*sdl.Joystick, sdl.NumJoysticks())
for i := 0; i < sdl.NumJoysticks(); i++ {
joy[i] = sdl.JoystickOpen(i)
fmt.Println("-----------------")
if joy[i] != nil {
fmt.Printf("Joystick %d\n", i)
fmt.Println(" Name: ", sdl.JoystickName(0))
fmt.Println(" Number of Axes: ", joy[i].NumAxes())
fmt.Println(" Number of Buttons: ", joy[i].NumButtons())
fmt.Println(" Number of Balls: ", joy[i].NumBalls())
} else {
fmt.Println(" Couldn't open Joystick!")
}
}
return v.resize
}
示例13: uploadTexture_RGBA32
func uploadTexture_RGBA32(w, h int, data []byte) gl.Texture {
id := gl.GenTexture()
id.Bind(gl.TEXTURE_2D)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R, gl.CLAMP_TO_EDGE)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, int(w), int(h), 0, gl.RGBA, gl.UNSIGNED_BYTE, data)
if gl.GetError() != gl.NO_ERROR {
id.Delete()
panic("Failed to load a texture")
return 0
}
return id
}
示例14: CreateTexture
func CreateTexture(img image.Image) (*Texture, error) {
imgW, imgH := img.Bounds().Dx(), img.Bounds().Dy()
imgDim := Vector2{float32(imgW), float32(imgH)}
rgbaImg, ok := img.(*image.NRGBA)
if !ok {
return nil, errors.New("texture must be an NRGBA image")
}
textureId := gl.GenTexture()
textureId.Bind(gl.TEXTURE_2D)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexImage2D(gl.TEXTURE_2D, 0, 4, imgW, imgH, 0, gl.RGBA, gl.UNSIGNED_BYTE, rgbaImg.Pix)
return &Texture{textureId, imgDim, false, false, false, nextTextureCacheId()}, nil
}
示例15: NewTextureEmpty
func NewTextureEmpty(width int, height int, model color.Model) *Texture {
internalFormat, typ, format, target, e := ColorModelToGLTypes(model)
if e != nil {
return nil
}
a := gl.GenTexture()
a.Bind(target)
gl.TexImage2D(target, 0, internalFormat, width, height, 0, typ, format, nil)
t := &Texture{a, false, nil, format, typ, internalFormat, target, width, height}
t.SetWraping(WrapS, ClampToEdge)
t.SetWraping(WrapT, ClampToEdge)
t.SetFiltering(Nearest, Nearest)
ResourceManager.Add(t)
return t
}