本文整理汇总了Golang中github.com/go-gl/gl/v2/1/gl.TexParameteri函数的典型用法代码示例。如果您正苦于以下问题:Golang TexParameteri函数的具体用法?Golang TexParameteri怎么用?Golang TexParameteri使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了TexParameteri函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: NewTexture
func (c *Context) NewTexture(width, height int, pixels []uint8, filter Filter) (Texture, error) {
var texture Texture
if err := c.runOnContextThread(func() error {
var t uint32
gl.GenTextures(1, &t)
// TODO: Use gl.IsTexture
if t <= 0 {
return errors.New("opengl: creating texture failed")
}
gl.PixelStorei(gl.UNPACK_ALIGNMENT, 4)
texture = Texture(t)
return nil
}); err != nil {
return 0, err
}
if err := c.BindTexture(texture); err != nil {
return 0, err
}
if err := c.runOnContextThread(func() error {
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, int32(filter))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, int32(filter))
var p interface{}
if pixels != nil {
p = pixels
}
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, int32(width), int32(height), 0, gl.RGBA, gl.UNSIGNED_BYTE, gl.Ptr(p))
return nil
}); err != nil {
return 0, err
}
return texture, nil
}
开发者ID:hajimehoshi,项目名称:ebiten,代码行数:33,代码来源:context_desktop.go
示例2: 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}
}
开发者ID:manyminds,项目名称:tmx,代码行数:33,代码来源:opengl.go
示例3: 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)
}
开发者ID:joonazan,项目名称:go-opas,代码行数:26,代码来源:piirto.go
示例4: 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
}
开发者ID:gdm85,项目名称:wolfengo,代码行数:58,代码来源:texture.go
示例5: 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
}
开发者ID:farhaven,项目名称:universe,代码行数:55,代码来源:drawing.go
示例6: 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()
}
}
开发者ID:shibukawa,项目名称:fontstash.go,代码行数:54,代码来源:truetype.go
示例7: 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
}
开发者ID:cherrybob,项目名称:nes,代码行数:11,代码来源:util.go
示例8: LoadTexture
func LoadTexture(path string) {
//fmt.Printf("Trying to load texture %q: ", path)
// Open the file
file, err := os.Open(path)
if err != nil {
fmt.Println(os.Getwd())
log.Fatal(err)
}
defer file.Close()
// Decode the image
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
bounds := img.Bounds()
//fmt.Printf("Loaded %vx%v texture.\n", bounds.Dx(), bounds.Dy())
var format int
var pixPointer *uint8
switch img := img.(type) {
case *image.RGBA:
format = gl.RGBA
pixPointer = &img.Pix[0]
case *image.NRGBA:
format = gl.RGBA
pixPointer = &img.Pix[0]
case *image.Gray:
format = gl.ALPHA
pixPointer = &img.Pix[0]
default:
log.Fatalf("LoadTexture: Unsupported type %T.\n", img)
}
var texture uint32
gl.GenTextures(1, &texture)
gl.BindTexture(gl.TEXTURE_2D, texture)
gl.TexParameteri(gl.TEXTURE_2D, gl.GENERATE_MIPMAP, gl.TRUE)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_LOD_BIAS, -0.5)
gl.TexImage2D(gl.TEXTURE_2D, 0, int32(format), int32(bounds.Dx()), int32(bounds.Dy()), 0, uint32(format), gl.UNSIGNED_BYTE, gl.Ptr(pixPointer))
CheckGLError()
}
开发者ID:rexposadas,项目名称:Conception-go,代码行数:46,代码来源:text.go
示例9: initGL
func (v *Video) initGL() {
if err := gl.Init(); err != nil {
panic(err)
}
gl.Enable(gl.CULL_FACE)
gl.Enable(gl.DEPTH_TEST)
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
v.prog = createProgram(vertShaderSrcDef, fragShaderSrcDef)
posAttrib := uint32(gl.GetAttribLocation(v.prog, gl.Str("vPosition"+"\x00")))
texCoordAttr := uint32(gl.GetAttribLocation(v.prog, gl.Str("vTexCoord"+"\x00")))
v.textureUni = gl.GetAttribLocation(v.prog, gl.Str("texture"+"\x00"))
var texture uint32
gl.GenTextures(1, &texture)
gl.ActiveTexture(gl.TEXTURE0)
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.UseProgram(v.prog)
gl.EnableVertexAttribArray(posAttrib)
gl.EnableVertexAttribArray(texCoordAttr)
//posAttrib.EnableArray()
//texCoordAttr.EnableArray()
var vbo uint32
gl.GenBuffers(1, &vbo)
gl.BindBuffer(gl.ARRAY_BUFFER, vbo)
verts := []float32{-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0}
gl.BufferData(gl.ARRAY_BUFFER, len(verts)*int(unsafe.Sizeof(verts[0])), gl.Ptr(verts), gl.STATIC_DRAW)
var textCoorBuf uint32
gl.GenBuffers(1, &textCoorBuf)
gl.BindBuffer(gl.ARRAY_BUFFER, textCoorBuf)
texVerts := []float32{0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0}
gl.BufferData(gl.ARRAY_BUFFER, len(texVerts)*int(unsafe.Sizeof(texVerts[0])), gl.Ptr(texVerts), gl.STATIC_DRAW)
gl.VertexAttribPointer(posAttrib, 2, gl.FLOAT, false, 0, gl.PtrOffset(0))
gl.VertexAttribPointer(texCoordAttr, 2, gl.FLOAT, false, 0, gl.PtrOffset(0))
//posAttrib.AttribPointer(2, gl.FLOAT, false, 0, uintptr(0))
//texCoordAttr.AttribPointer(2, gl.FLOAT, false, 0, uintptr(0))
}
开发者ID:badfortrains,项目名称:Fergulator,代码行数:45,代码来源:video.go
示例10: draw
func (atlas *FontAtlas) draw(rendered *image.RGBA, b Bounds) {
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(rendered.Bounds().Dx()),
int32(rendered.Bounds().Dy()),
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(rendered.Pix))
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
gl.Begin(gl.QUADS)
{
gl.TexCoord2f(0, 0)
gl.Vertex2f(b.Min.X, b.Min.Y)
gl.TexCoord2f(1, 0)
gl.Vertex2f(b.Max.X, b.Min.Y)
gl.TexCoord2f(1, 1)
gl.Vertex2f(b.Max.X, b.Max.Y)
gl.TexCoord2f(0, 1)
gl.Vertex2f(b.Min.X, b.Max.Y)
}
gl.End()
gl.Disable(gl.BLEND)
gl.DeleteTextures(1, &texture)
gl.Disable(gl.TEXTURE_2D)
}
开发者ID:egonelbre,项目名称:spector,代码行数:43,代码来源:fontatlas_slow.go
示例11: NewGLImageFromImage
func NewGLImageFromImage(img image.Image) (*glImage, error) {
var rgba *image.RGBA
if asRGBA, ok := img.(*image.RGBA); ok {
rgba = asRGBA
} else {
rgba = image.NewRGBA(img.Bounds())
if rgba.Stride != rgba.Rect.Size().X*4 {
return nil, errors.New("unsupported stride")
}
draw.Draw(rgba, rgba.Bounds(), img, image.Point{0, 0}, draw.Src)
}
var tex uint32
gl.Enable(gl.TEXTURE_2D)
gl.GenTextures(1, &tex)
gl.BindTexture(gl.TEXTURE_2D, tex)
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.Bounds().Dx()),
int32(rgba.Bounds().Dy()),
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(rgba.Pix),
)
return &glImage{
tex,
img.Bounds().Dx(),
img.Bounds().Dy(),
0.0,
0.0,
1.0,
1.0,
}, nil
}
开发者ID:gonutz,项目名称:settlers,代码行数:42,代码来源:gl_image.go
示例12: NewTexture
func (c *Context) NewTexture(width, height int, pixels []uint8, filter Filter) (Texture, error) {
var t uint32
gl.GenTextures(1, &t)
if t < 0 {
return 0, errors.New("glGenTexture failed")
}
gl.PixelStorei(gl.UNPACK_ALIGNMENT, 4)
gl.BindTexture(gl.TEXTURE_2D, t)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, int32(filter))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, int32(filter))
var p interface{}
if pixels != nil {
p = pixels
}
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, int32(width), int32(height), 0, gl.RGBA, gl.UNSIGNED_BYTE, gl.Ptr(p))
return Texture(t), nil
}
开发者ID:DrJosh9000,项目名称:ebiten,代码行数:20,代码来源:context.go
示例13: 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
}
开发者ID:PieterD,项目名称:crap,代码行数:38,代码来源:texture.go
示例14: upload
func (atlas *FontAtlas) upload() {
if !atlas.Dirty {
return
}
atlas.Dirty = false
gl.Enable(gl.TEXTURE_2D)
if atlas.Texture != 0 {
gl.DeleteTextures(1, &atlas.Texture)
atlas.Texture = 0
}
gl.GenTextures(1, &atlas.Texture)
gl.BindTexture(gl.TEXTURE_2D, atlas.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(atlas.Image.Rect.Size().X),
int32(atlas.Image.Rect.Size().Y),
0,
gl.RGBA,
gl.UNSIGNED_BYTE,
gl.Ptr(atlas.Image.Pix))
if err := gl.GetError(); err != 0 {
log.Println(err)
}
gl.Disable(gl.TEXTURE_2D)
}
开发者ID:egonelbre,项目名称:spector,代码行数:38,代码来源:fontatlas.go
示例15: newTexture
func newTexture(file string) uint32 {
imgFile, err := os.Open(file)
if err != nil {
panic(err)
}
img, _, err := image.Decode(imgFile)
if err != nil {
panic(err)
}
rgba := image.NewRGBA(img.Bounds())
if rgba.Stride != rgba.Rect.Size().X*4 {
panic("unsupported stride")
}
draw.Draw(rgba, rgba.Bounds(), img, image.Point{0, 0}, 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 texture
}
开发者ID:Geemili,项目名称:maze-rogue,代码行数:37,代码来源:maze-rogue.go
示例16: New
func New(cachew, cacheh int) *Stash {
stash := &Stash{}
// Create data for clearing the textures
stash.emptyData = make([]byte, cachew*cacheh)
// Create first texture for the cache
stash.tw = cachew
stash.th = cacheh
stash.itw = 1 / float64(cachew)
stash.ith = 1 / float64(cacheh)
gl.Enable(gl.TEXTURE_2D)
stash.ttTextures = make([]*Texture, 1)
stash.ttTextures[0] = &Texture{}
gl.GenTextures(1, &stash.ttTextures[0].id)
gl.BindTexture(gl.TEXTURE_2D, stash.ttTextures[0].id)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.ALPHA, int32(cachew), int32(cacheh),
0, gl.ALPHA, gl.UNSIGNED_BYTE, unsafe.Pointer(&stash.emptyData[0]))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.Disable(gl.TEXTURE_2D)
return stash
}
开发者ID:shibukawa,项目名称:fontstash.go,代码行数:24,代码来源:fontstash.go
示例17: newTexture
func newTexture(rgba image.RGBA) *uint32 {
var texture1 uint32
gl.Enable(gl.TEXTURE_2D)
gl.GenTextures(1, &texture1)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
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 &texture1
}
开发者ID:lordwelch,项目名称:PresentationApp,代码行数:19,代码来源:glfw.go
示例18: GetGlyph
func (stash *Stash) GetGlyph(fnt *Font, codepoint int, isize int16) *Glyph {
size := float64(isize) / 10
// Find code point and size.
h := hashint(uint(codepoint)) & (HASH_LUT_SIZE - 1)
for i := fnt.lut[h]; i != -1; i = fnt.glyphs[i].next {
if fnt.glyphs[i].codepoint == codepoint && (fnt.fType == BMFONT || fnt.glyphs[i].size == isize) {
return fnt.glyphs[i]
}
}
// Could not find glyph.
// For bitmap fonts: ignore this glyph.
if fnt.fType == BMFONT {
return nil
}
// For truetype fonts: create this glyph.
scale := fnt.font.ScaleForPixelHeight(size)
g := fnt.font.FindGlyphIndex(codepoint)
if g == 0 {
// glyph not found
return nil
}
advance, _ := fnt.font.GetGlyphHMetrics(g)
x0, y0, x1, y1 := fnt.font.GetGlyphBitmapBox(g, scale, scale)
gw := x1 - x0
gh := y1 - y0
// Check if glyph is larger than maximum texture size
if gw >= stash.tw || gh >= stash.th {
return nil
}
// Find texture and row where the glyph can be fit.
rh := (int16(gh) + 7) & ^7
var tt int
texture := stash.ttTextures[tt]
var br *Row
for br == nil {
for i := range texture.rows {
if texture.rows[i].h == rh && int(texture.rows[i].x)+gw+1 <= stash.tw {
br = texture.rows[i]
}
}
// If no row is found, there are 3 possibilities:
// - add new row
// - try next texture
// - create new texture
if br == nil {
var py int16
// Check that there is enough space.
if len(texture.rows) > 0 {
py = texture.rows[len(texture.rows)-1].y + texture.rows[len(texture.rows)-1].h + 1
if int(py+rh) > stash.th {
if tt < len(stash.ttTextures)-1 {
tt++
texture = stash.ttTextures[tt]
} else {
// Create new texture
gl.Enable(gl.TEXTURE_2D)
texture = &Texture{}
gl.GenTextures(1, &texture.id)
gl.BindTexture(gl.TEXTURE_2D, texture.id)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.ALPHA,
int32(stash.tw), int32(stash.th), 0,
gl.ALPHA, gl.UNSIGNED_BYTE,
unsafe.Pointer(&stash.emptyData[0]))
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.Disable(gl.TEXTURE_2D)
stash.ttTextures = append(stash.ttTextures, texture)
}
continue
}
}
// Init and add row
br = &Row{
x: 0,
y: py,
h: rh,
}
texture.rows = append(texture.rows, br)
}
}
// Init glyph.
glyph := &Glyph{
codepoint: codepoint,
size: isize,
texture: texture,
x0: int(br.x),
y0: int(br.y),
x1: int(br.x) + gw,
y1: int(br.y) + gh,
xadv: scale * float64(advance),
xoff: float64(x0),
yoff: float64(y0),
next: 0,
//.........这里部分代码省略.........
开发者ID:shibukawa,项目名称:fontstash.go,代码行数:101,代码来源:fontstash.go
示例19: TexParameteri
func (*backend) TexParameteri(target gg.Enum, pname gg.Enum, param gg.Enum) {
gl.TexParameteri(uint32(target), uint32(pname), int32(param))
}
开发者ID:dmac,项目名称:gg,代码行数:3,代码来源:gg.go
示例20: setTexMipMap
func setTexMipMap() {
gl.TexParameteri(gl.TEXTURE_2D, gl.GENERATE_MIPMAP, gl.TRUE)
}
开发者ID:tanema,项目名称:amore,代码行数:3,代码来源:shim_opengl.go
注:本文中的github.com/go-gl/gl/v2/1/gl.TexParameteri函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论