no longer using TEXTURE_1D since it is not available on GL ES

This commit is contained in:
Thomas Friedel 2018-05-10 17:26:31 +02:00
parent 06267645f6
commit 54e97761de
6 changed files with 714 additions and 764 deletions

View file

@ -81,17 +81,27 @@ func (_ GLImpl) GetAttribLocation(program uint32, name string) int32 {
func (_ GLImpl) GetError() uint32 {
return gl.GetError()
}
func (_ GLImpl) GetProgramInfoLog(program uint32, bufSize int32) string {
log := strings.Repeat("\x00", int(bufSize+1))
gl.GetProgramInfoLog(program, bufSize, nil, gl.Str(log))
func (_ GLImpl) GetProgramInfoLog(program uint32) string {
var length int32
gl.GetProgramiv(program, gl.INFO_LOG_LENGTH, &length)
if length == 0 {
return ""
}
log := strings.Repeat("\x00", int(length+1))
gl.GetProgramInfoLog(program, length, nil, gl.Str(log))
return log
}
func (_ GLImpl) GetProgramiv(program uint32, pname uint32, params *int32) {
gl.GetProgramiv(program, pname, params)
}
func (_ GLImpl) GetShaderInfoLog(program uint32, bufSize int32) string {
log := strings.Repeat("\x00", int(bufSize+1))
gl.GetShaderInfoLog(program, bufSize, nil, gl.Str(log))
func (_ GLImpl) GetShaderInfoLog(program uint32) string {
var length int32
gl.GetShaderiv(program, gl.INFO_LOG_LENGTH, &length)
if length == 0 {
return ""
}
log := strings.Repeat("\x00", int(length+1))
gl.GetShaderInfoLog(program, length, nil, gl.Str(log))
return log
}
func (_ GLImpl) GetShaderiv(shader uint32, pname uint32, params *int32) {
@ -123,9 +133,6 @@ func (_ GLImpl) StencilMask(mask uint32) {
func (_ GLImpl) StencilOp(fail uint32, zfail uint32, zpass uint32) {
gl.StencilOp(fail, zfail, zpass)
}
func (_ GLImpl) TexImage1D(target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
gl.TexImage1D(target, level, internalformat, width, border, format, xtype, pixels)
}
func (_ GLImpl) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
gl.TexImage2D(target, level, internalformat, width, height, border, format, xtype, pixels)
}

View file

@ -42,10 +42,11 @@ func NewLinearGradient(x0, y0, x1, y1 float64) *LinearGradient {
lg := &LinearGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}}
gli.GenTextures(1, &lg.tex)
gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, lg.tex)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
gli.BindTexture(gl_TEXTURE_2D, lg.tex)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
runtime.SetFinalizer(lg, func(lg *LinearGradient) {
glChan <- func() {
gli.DeleteTextures(1, &lg.tex)
@ -62,10 +63,11 @@ func NewRadialGradient(x0, y0, r0, x1, y1, r1 float64) *RadialGradient {
rg := &RadialGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}, radFrom: r0, radTo: r1}
gli.GenTextures(1, &rg.tex)
gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, rg.tex)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
gli.BindTexture(gl_TEXTURE_2D, rg.tex)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
runtime.SetFinalizer(rg, func(rg *RadialGradient) {
glChan <- func() {
gli.DeleteTextures(1, &rg.tex)
@ -86,7 +88,7 @@ func (g *gradient) load() {
}
gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, g.tex)
gli.BindTexture(gl_TEXTURE_2D, g.tex)
var pixels [2048 * 4]byte
pp := 0
for i := 0; i < 2048; i++ {
@ -97,7 +99,7 @@ func (g *gradient) load() {
pixels[pp+3] = byte(math.Floor(c.a*255 + 0.5))
pp += 4
}
gli.TexImage1D(gl_TEXTURE_1D, 0, gl_RGBA, 2048, 0, gl_RGBA, gl_UNSIGNED_BYTE, gli.Ptr(&pixels[0]))
gli.TexImage2D(gl_TEXTURE_2D, 0, gl_RGBA, 2048, 1, 0, gl_RGBA, gl_UNSIGNED_BYTE, gli.Ptr(&pixels[0]))
g.loaded = true
}

File diff suppressed because it is too large Load diff

View file

@ -204,10 +204,8 @@ const compilePart = `
gli.ShaderSource(SHADER_VAR, SHADER_SRC)
gli.CompileShader(SHADER_VAR)
var logLength int32
gli.GetShaderiv(SHADER_VAR, gl_INFO_LOG_LENGTH, &logLength)
if logLength > 0 {
shLog := gli.GetShaderInfoLog(SHADER_VAR, logLength)
shLog := gli.GetShaderInfoLog(SHADER_VAR)
if len(shLog) > 0 {
fmt.Printf("SHADER_TYPE compilation log for SHADER_SRC:\n\n%s\n", shLog)
}
@ -229,10 +227,8 @@ const linkPart = `
gli.AttachShader(program, fs)
gli.LinkProgram(program)
var logLength int32
gli.GetProgramiv(program, gl_INFO_LOG_LENGTH, &logLength)
if logLength > 0 {
shLog := gli.GetProgramInfoLog(program, logLength)
shLog := gli.GetProgramInfoLog(program)
if len(shLog) > 0 {
fmt.Printf("Shader link log for SHADER_SRC:\n\n%s\n", shLog)
}

View file

@ -816,9 +816,9 @@ type GL interface {
GenerateMipmap(target uint32)
GetAttribLocation(program uint32, name string) int32
GetError() uint32
GetProgramInfoLog(program uint32, bufSize int32) string
GetProgramInfoLog(program uint32) string
GetProgramiv(program uint32, pname uint32, params *int32)
GetShaderInfoLog(shader uint32, bufSize int32) string
GetShaderInfoLog(shader uint32) string
GetShaderiv(shader uint32, pname uint32, params *int32)
GetUniformLocation(program uint32, name string) int32
LinkProgram(program uint32)
@ -828,7 +828,6 @@ type GL interface {
StencilFunc(xfunc uint32, ref int32, mask uint32)
StencilMask(mask uint32)
StencilOp(fail uint32, zfail uint32, zpass uint32)
TexImage1D(target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer)
TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer)
TexParameteri(target uint32, pname uint32, param int32)
TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer)

View file

@ -56,7 +56,7 @@ precision mediump float;
#endif
varying vec2 v_cp;
uniform mat3 invmat;
uniform sampler1D gradient;
uniform sampler2D gradient;
uniform vec2 from, dir;
uniform float len;
uniform float globalAlpha;
@ -65,7 +65,7 @@ void main() {
vec2 v = untf.xy - from;
float r = dot(v, dir) / len;
r = clamp(r, 0.0, 1.0);
vec4 col = texture1D(gradient, r);
vec4 col = texture2D(gradient, vec2(r, 0.0));
col.a *= globalAlpha;
gl_FragColor = col;
}`
@ -85,7 +85,7 @@ precision mediump float;
#endif
varying vec2 v_cp;
uniform mat3 invmat;
uniform sampler1D gradient;
uniform sampler2D gradient;
uniform vec2 from, to, dir;
uniform float radFrom, radTo;
uniform float len;
@ -110,7 +110,7 @@ void main() {
}
float o = max(o1, o2);
//float r = radFrom + o * (radTo - radFrom);
vec4 col = texture1D(gradient, o);
vec4 col = texture2D(gradient, vec2(o, 0.0));
col.a *= globalAlpha;
gl_FragColor = col;
}`
@ -182,7 +182,7 @@ varying vec2 v_cp;
varying vec2 v_atc;
varying vec2 v_texCoord;
uniform mat3 invmat;
uniform sampler1D gradient;
uniform sampler2D gradient;
uniform vec2 from, dir;
uniform float len;
uniform sampler2D alphaTex;
@ -192,7 +192,7 @@ void main() {
vec2 v = untf.xy - from;
float r = dot(v, dir) / len;
r = clamp(r, 0.0, 1.0);
vec4 col = texture1D(gradient, r);
vec4 col = texture2D(gradient, vec2(r, 0.0));
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
gl_FragColor = col;
}`
@ -215,7 +215,7 @@ precision mediump float;
varying vec2 v_cp;
varying vec2 v_atc;
uniform mat3 invmat;
uniform sampler1D gradient;
uniform sampler2D gradient;
uniform vec2 from, to, dir;
uniform float radFrom, radTo;
uniform float len;
@ -241,7 +241,7 @@ void main() {
}
float o = max(o1, o2);
float r = radFrom + o * (radTo - radFrom);
vec4 col = texture1D(gradient, o);
vec4 col = texture2D(gradient, vec2(o, 0.0));
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
gl_FragColor = col;
}`