...
Source file
src/tawesoft.co.uk/go/glcaps/common.go
Documentation:
src/tawesoft.co.uk/go/glcaps/common.go
1 package glcaps
2
3 import (
4 "sort"
5 )
6
7
8 type Extensions []string
9
10
11 func (extensions Extensions) Contains(key string) bool {
12 var index = sort.SearchStrings(extensions, key)
13 return (index < len(extensions)) && (extensions[index] == key)
14 }
15
16
17
18 type Binding struct {
19 GetIntegerv func(name uint32, data *int32)
20 GetFloatv func(name uint32, data *float32)
21 GetString func(name uint32) string
22 GetStringi func(name uint32, index uint32) string
23 }
24
25
26
27 func (b *Binding) QueryExtensions() Extensions {
28 var numExtensions int32
29 b.GetIntegerv(glconstants["GL_NUM_EXTENSIONS"], &numExtensions)
30 if numExtensions <= 0 {
31 panic("failed to query OpenGL extensions (is the OpenGL context current?)")
32 }
33
34 var xs = make([]string, 0, numExtensions)
35
36 for i := uint32(0); i < uint32(numExtensions); i++ {
37 x := b.GetStringi(glconstants["GL_EXTENSIONS"], i)
38 if len(x) == 0 { continue }
39 xs = append(xs, x)
40 }
41
42 sort.Strings(xs)
43 return xs
44 }
45
46
47 type Error struct {
48 Field string
49 Tag string
50 Requirement requirement
51 Message string
52 }
53
54 type Errors []Error
55
56 func (es *Errors) append(e ... Error) {
57 if *es == nil && (len(e) > 0) {
58 *es = make([]Error, 0)
59 }
60
61 *es = append(*es, e...)
62 }
63
64
65
66
67
View as plain text