本文整理汇总了Golang中github.com/go-gl/gl/v2/1/gl.BindTexture函数的典型用法代码示例。如果您正苦于以下问题:Golang BindTexture函数的具体用法?Golang BindTexture怎么用?Golang BindTexture使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BindTexture函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: BindTexture
func (c *Context) BindTexture(target int, texture *Texture) {
if texture == nil {
gl.BindTexture(uint32(target), 0)
return
}
gl.BindTexture(uint32(target), texture.uint32)
}
示例2: Update
func (view *GameView) Update(t, dt float64) {
if dt > 1 {
dt = 0
}
window := view.director.window
console := view.console
if joystickReset(glfw.Joystick1) {
view.director.ShowMenu()
}
if joystickReset(glfw.Joystick2) {
view.director.ShowMenu()
}
if readKey(window, glfw.KeyEscape) {
view.director.ShowMenu()
}
updateControllers(window, console)
console.StepSeconds(dt)
gl.BindTexture(gl.TEXTURE_2D, view.texture)
setTexture(console.Buffer())
drawBuffer(view.director.window)
gl.BindTexture(gl.TEXTURE_2D, 0)
if view.record {
view.frames = append(view.frames, copyImage(console.Buffer()))
}
}
示例3: createTexture
func createTexture() uint32 {
var texture uint32
gl.GenTextures(1, &texture)
gl.BindTexture(gl.TEXTURE_2D, texture)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
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.BindTexture(gl.TEXTURE_2D, 0)
return texture
}
示例4: NewTexture
func NewTexture() *Texture {
texture := createTexture()
gl.BindTexture(gl.TEXTURE_2D, texture)
gl.TexImage2D(
gl.TEXTURE_2D, 0, gl.RGBA,
textureSize, textureSize,
0, gl.RGBA, gl.UNSIGNED_BYTE, nil)
gl.BindTexture(gl.TEXTURE_2D, 0)
t := Texture{}
t.texture = texture
t.lookup = make(map[string]int)
t.ch = make(chan string, 1024)
return &t
}
示例5: LataaKuvat
func LataaKuvat() {
file, err := os.Open("tiles.png")
if err != nil {
panic("En saa avattua kuvatiedostoa: " + err.Error())
}
kuva, _, err := image.Decode(file)
if err != nil {
panic("Kuva on rikki: " + err.Error())
}
var texture uint32
gl.GenTextures(1, &texture)
gl.BindTexture(gl.TEXTURE_2D, texture)
gl.TexImage2D(gl.TEXTURE_2D, 0, 4,
int32(kuva.Bounds().Dx()), int32(kuva.Bounds().Dy()), 0,
gl.RGBA, gl.UNSIGNED_BYTE,
unsafe.Pointer(&kuva.(*image.RGBA).Pix[0]),
)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.Enable(gl.TEXTURE_2D)
}
示例6: newChipset
func newChipset(file string, tilesize int) chipset {
imgFile, err := os.Open(file)
if err != nil {
log.Fatalf("texture %q not found on disk: %v\n", file, err)
}
img, _, err := image.Decode(imgFile)
if err != nil {
panic(err)
}
rgba := image.NewRGBA(img.Bounds())
draw.Draw(rgba, rgba.Bounds(), img, image.ZP, draw.Src)
var texture uint32
gl.Enable(gl.TEXTURE_2D)
gl.GenTextures(1, &texture)
gl.BindTexture(gl.TEXTURE_2D, texture)
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.TexImage2D(
gl.TEXTURE_2D,
0, gl.RGBA,
int32(rgba.Rect.Size().X),
int32(rgba.Rect.Size().Y),
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(rgba.Pix))
return chipset{width: rgba.Bounds().Dx(), height: rgba.Bounds().Dy(), handle: texture, tilesize: tilesize}
}
示例7: bindTextureImpl
func (c *Context) bindTextureImpl(t Texture) error {
_ = c.runOnContextThread(func() error {
gl.BindTexture(gl.TEXTURE_2D, uint32(t))
return nil
})
return nil
}
示例8: drawHud
func (ctx *DrawContext) drawHud(o *orrery.Orrery, frametime time.Duration) {
txt, size, err := ctx.createHudTexture(o, frametime)
if err != nil {
log.Fatalf(`can't create texture from text surface: %s`, err)
}
defer gl.DeleteTextures(1, &txt)
gl.MatrixMode(gl.PROJECTION)
gl.PushMatrix()
gl.LoadIdentity()
gl.Ortho(0.0, float64(ctx.width), float64(ctx.height), 0.0, -1.0, 1.0)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Clear(gl.DEPTH_BUFFER_BIT)
gl.BindTexture(gl.TEXTURE_2D, txt)
gl.Enable(gl.TEXTURE_2D)
defer gl.Disable(gl.TEXTURE_2D)
gl.Color3f(1, 1, 1)
gl.Begin(gl.QUADS)
gl.TexCoord2f(0, 0)
gl.Vertex2f(0.0, 0.0)
gl.TexCoord2f(1, 0)
gl.Vertex2f(float32(size[0]), 0.0)
gl.TexCoord2f(1, 1)
gl.Vertex2f(float32(size[0]), float32(size[1]))
gl.TexCoord2f(0, 1)
gl.Vertex2f(0.0, float32(size[1]))
gl.End()
gl.PopMatrix()
}
示例9: DrawColoredAtXY
func (img *glImage) DrawColoredAtXY(x, y int, color [4]float32) {
// TODO have the state knwon globally somewhere so this does not need to be
// called all the time
gl.Enable(gl.TEXTURE_2D)
gl.BindTexture(gl.TEXTURE_2D, img.id)
gl.Begin(gl.QUADS)
gl.Color4f(color[0], color[1], color[2], color[3])
gl.TexCoord2f(img.left, img.top)
gl.Vertex2i(int32(x), int32(y))
gl.Color4f(color[0], color[1], color[2], color[3])
gl.TexCoord2f(img.right, img.top)
gl.Vertex2i(int32(x+img.Width), int32(y))
gl.Color4f(color[0], color[1], color[2], color[3])
gl.TexCoord2f(img.right, img.bottom)
gl.Vertex2i(int32(x+img.Width), int32(y+img.Height))
gl.Color4f(color[0], color[1], color[2], color[3])
gl.TexCoord2f(img.left, img.bottom)
gl.Vertex2i(int32(x), int32(y+img.Height))
gl.End()
}
示例10: loadTexture
func loadTexture(fileName string) (uint32, error) {
imgFile, err := os.Open("./res/textures/" + fileName)
if err != nil {
return 0, err
}
imgCfg, _, err := image.DecodeConfig(imgFile)
if err != nil {
return 0, err
}
_, err = imgFile.Seek(0, 0)
if err != nil {
return 0, err
}
w, h := int32(imgCfg.Width), int32(imgCfg.Height)
img, _, err := image.Decode(imgFile)
if err != nil {
return 0, err
}
buffer := make([]byte, w*h*4)
index := 0
for y := 0; y < int(h); y++ {
for x := 0; x < int(w); x++ {
pixel := img.At(x, y).(color.NRGBA)
buffer[index] = pixel.R
buffer[index+1] = pixel.G
buffer[index+2] = pixel.B
buffer[index+3] = pixel.A
index += 4
}
}
var texture uint32
gl.GenTextures(1, &texture)
gl.BindTexture(gl.TEXTURE_2D, texture)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
gl.TexImage2D(
gl.TEXTURE_2D,
0,
gl.RGBA8,
w,
h,
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(buffer))
return texture, nil
}
示例11: createHudTexture
func (ctx *DrawContext) createHudTexture(o *orrery.Orrery, frametime time.Duration) (uint32, [2]int, error) {
lines := []string{}
if o.Paused {
lines = append(lines, "PAUSED")
}
if ctx.verbose {
lines = append(lines, []string{
"WASD: Move, 1: Toggle wireframe, H: Toggle HUD verbosity, Q: Quit",
"Mouse Wheel: Move fast, Mouse Btn #1: Spawn particle, V: Spawn 10 particles",
"Space: Reset camera, P: Toggle pause",
}...)
}
lines = append(lines, []string{
fmt.Sprintf(` α: %0.2f θ: %0.2f`, ctx.cam.alpha, ctx.cam.theta),
fmt.Sprintf(` x: %0.2f y: %0.2f z: %0.2f`, ctx.cam.Pos.X, ctx.cam.Pos.Y, ctx.cam.Pos.Z),
fmt.Sprintf(` Last frame time: %s`, frametime),
}...)
if ctx.verbose {
particles := o.Particles()
lines = append(lines, fmt.Sprintf(`#P: %d`, len(particles)))
for i, p := range particles {
p.L.Lock()
l := fmt.Sprintf(` π %d: %s`, i, p)
p.L.Unlock()
lines = append(lines, l)
}
}
var txt uint32
gl.GenTextures(1, &txt)
gl.BindTexture(gl.TEXTURE_2D, txt)
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_BASE_LEVEL, 0)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL, 0)
bg := color.RGBA{0, 0, 0, 0}
fg := color.RGBA{0, 255, 255, 255}
img, err := ctx.txt.RenderMultiline(lines, 12.5, bg, fg)
if err != nil {
return 0, [2]int{0, 0}, err
}
v := reflect.ValueOf(img.Pix)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA,
int32(img.Bounds().Dx()), int32(img.Bounds().Dy()),
0, gl.RGBA, gl.UNSIGNED_BYTE, unsafe.Pointer(v.Index(0).UnsafeAddr()))
return txt, [2]int{img.Bounds().Dx(), img.Bounds().Dy()}, nil
}
示例12: main
func main() {
runtime.LockOSThread()
if err := glfw.Init(); err != nil {
panic(err)
}
defer glfw.Terminate()
window, err := glfw.CreateWindow(800, 600, "fontstash example", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
glfw.SwapInterval(1)
gl.Init()
data, err := ioutil.ReadFile(filepath.Join("..", "ClearSans-Regular.ttf"))
if err != nil {
panic(err)
}
gl.Enable(gl.TEXTURE_2D)
tmpBitmap := make([]byte, 512*512)
cdata, err, _, tmpBitmap := truetype.BakeFontBitmap(data, 0, 32, tmpBitmap, 512, 512, 32, 96)
var ftex uint32
gl.GenTextures(1, &ftex)
gl.BindTexture(gl.TEXTURE_2D, ftex)
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.ALPHA, 512, 512, 0,
gl.ALPHA, gl.UNSIGNED_BYTE, unsafe.Pointer(&tmpBitmap[0]))
gl.ClearColor(0.3, 0.3, 0.32, 1.)
for !window.ShouldClose() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Ortho(0, 800, 600, 0, 0, 1)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Disable(gl.DEPTH_TEST)
gl.Color4ub(255, 255, 255, 255)
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
my_print(100, 100, "The quick brown fox jumps over the fence", ftex, cdata)
window.SwapBuffers()
glfw.PollEvents()
}
}
示例13: FlushDraw
func (stash *Stash) FlushDraw() {
i := 0
texture := stash.ttTextures[i]
tt := true
for {
if texture.nverts > 0 {
gl.Enable(gl.TEXTURE_2D)
gl.BindTexture(gl.TEXTURE_2D, texture.id)
for k := 0; k < texture.nverts; k++ {
gl.Begin(gl.QUADS)
gl.Color4fv(&texture.color[0])
gl.TexCoord2f(texture.verts[k*4+2], texture.verts[k*4+3])
gl.Vertex2f(texture.verts[k*4+0], texture.verts[k*4+1])
k++
gl.Color4fv(&texture.color[0])
gl.TexCoord2f(texture.verts[k*4+2], texture.verts[k*4+3])
gl.Vertex2f(texture.verts[k*4+0], texture.verts[k*4+1])
k++
gl.Color4fv(&texture.color[0])
gl.TexCoord2f(texture.verts[k*4+2], texture.verts[k*4+3])
gl.Vertex2f(texture.verts[k*4+0], texture.verts[k*4+1])
k++
gl.Color4fv(&texture.color[0])
gl.TexCoord2f(texture.verts[k*4+2], texture.verts[k*4+3])
gl.Vertex2f(texture.verts[k*4+0], texture.verts[k*4+1])
gl.End()
}
gl.Disable(gl.TEXTURE_2D)
texture.nverts = 0
}
if tt {
if i < len(stash.ttTextures)-1 {
i++
texture = stash.ttTextures[i]
} else {
i = 0
if len(stash.bmTextures) > 0 {
texture = stash.bmTextures[i]
tt = false
} else {
break
}
}
} else {
if i < len(stash.bmTextures)-1 {
i++
texture = stash.bmTextures[i]
} else {
break
}
}
}
}
示例14: NewTexture
func NewTexture(img *image.RGBA, opts ...TextureOption) (*Texture, error) {
if img.Stride != img.Rect.Size().X*4 {
return nil, fmt.Errorf("unsupported stride in texture image")
}
opt := textureOption{
filterMin: LINEAR,
filterMag: LINEAR,
wrap_s: REPEAT,
wrap_t: REPEAT,
}
for _, o := range opts {
o(&opt)
}
var id uint32
gl.GenTextures(1, &id)
gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, id)
defer gl.BindTexture(gl.TEXTURE_2D, 0)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, int32(opt.filterMin))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, int32(opt.filterMag))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, int32(opt.wrap_s))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, int32(opt.wrap_t))
gl.TexImage2D(
gl.TEXTURE_2D,
0,
gl.RGBA,
int32(img.Rect.Size().X),
int32(img.Rect.Size().Y),
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(img.Pix))
return &Texture{
id: id,
size: img.Rect.Size(),
}, nil
}
示例15: updateUniforms
func (s *Shader) updateUniforms(projectedMatrix Matrix4f, material *Material) {
if s.uniforms == nil {
return
}
if material.texture != nil {
material.texture.bind()
} else {
gl.BindTexture(gl.TEXTURE_2D, 0)
}
s.setUniformM("transform", projectedMatrix)
s.setUniform("color", material.color)
}