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 { func (_ GLImpl) GetError() uint32 {
return gl.GetError() return gl.GetError()
} }
func (_ GLImpl) GetProgramInfoLog(program uint32, bufSize int32) string { func (_ GLImpl) GetProgramInfoLog(program uint32) string {
log := strings.Repeat("\x00", int(bufSize+1)) var length int32
gl.GetProgramInfoLog(program, bufSize, nil, gl.Str(log)) 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 return log
} }
func (_ GLImpl) GetProgramiv(program uint32, pname uint32, params *int32) { func (_ GLImpl) GetProgramiv(program uint32, pname uint32, params *int32) {
gl.GetProgramiv(program, pname, params) gl.GetProgramiv(program, pname, params)
} }
func (_ GLImpl) GetShaderInfoLog(program uint32, bufSize int32) string { func (_ GLImpl) GetShaderInfoLog(program uint32) string {
log := strings.Repeat("\x00", int(bufSize+1)) var length int32
gl.GetShaderInfoLog(program, bufSize, nil, gl.Str(log)) 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 return log
} }
func (_ GLImpl) GetShaderiv(shader uint32, pname uint32, params *int32) { 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) { func (_ GLImpl) StencilOp(fail uint32, zfail uint32, zpass uint32) {
gl.StencilOp(fail, zfail, zpass) 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) { 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) 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}}} lg := &LinearGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}}
gli.GenTextures(1, &lg.tex) gli.GenTextures(1, &lg.tex)
gli.ActiveTexture(gl_TEXTURE0) gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, lg.tex) gli.BindTexture(gl_TEXTURE_2D, lg.tex)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR) gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR) gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE) 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) { runtime.SetFinalizer(lg, func(lg *LinearGradient) {
glChan <- func() { glChan <- func() {
gli.DeleteTextures(1, &lg.tex) 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} rg := &RadialGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}, radFrom: r0, radTo: r1}
gli.GenTextures(1, &rg.tex) gli.GenTextures(1, &rg.tex)
gli.ActiveTexture(gl_TEXTURE0) gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, rg.tex) gli.BindTexture(gl_TEXTURE_2D, rg.tex)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR) gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR) gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE) 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) { runtime.SetFinalizer(rg, func(rg *RadialGradient) {
glChan <- func() { glChan <- func() {
gli.DeleteTextures(1, &rg.tex) gli.DeleteTextures(1, &rg.tex)
@ -86,7 +88,7 @@ func (g *gradient) load() {
} }
gli.ActiveTexture(gl_TEXTURE0) gli.ActiveTexture(gl_TEXTURE0)
gli.BindTexture(gl_TEXTURE_1D, g.tex) gli.BindTexture(gl_TEXTURE_2D, g.tex)
var pixels [2048 * 4]byte var pixels [2048 * 4]byte
pp := 0 pp := 0
for i := 0; i < 2048; i++ { 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)) pixels[pp+3] = byte(math.Floor(c.a*255 + 0.5))
pp += 4 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 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.ShaderSource(SHADER_VAR, SHADER_SRC)
gli.CompileShader(SHADER_VAR) gli.CompileShader(SHADER_VAR)
var logLength int32 shLog := gli.GetShaderInfoLog(SHADER_VAR)
gli.GetShaderiv(SHADER_VAR, gl_INFO_LOG_LENGTH, &logLength) if len(shLog) > 0 {
if logLength > 0 {
shLog := gli.GetShaderInfoLog(SHADER_VAR, logLength)
fmt.Printf("SHADER_TYPE compilation log for SHADER_SRC:\n\n%s\n", shLog) 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.AttachShader(program, fs)
gli.LinkProgram(program) gli.LinkProgram(program)
var logLength int32 shLog := gli.GetProgramInfoLog(program)
gli.GetProgramiv(program, gl_INFO_LOG_LENGTH, &logLength) if len(shLog) > 0 {
if logLength > 0 {
shLog := gli.GetProgramInfoLog(program, logLength)
fmt.Printf("Shader link log for SHADER_SRC:\n\n%s\n", shLog) 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) GenerateMipmap(target uint32)
GetAttribLocation(program uint32, name string) int32 GetAttribLocation(program uint32, name string) int32
GetError() uint32 GetError() uint32
GetProgramInfoLog(program uint32, bufSize int32) string GetProgramInfoLog(program uint32) string
GetProgramiv(program uint32, pname uint32, params *int32) GetProgramiv(program uint32, pname uint32, params *int32)
GetShaderInfoLog(shader uint32, bufSize int32) string GetShaderInfoLog(shader uint32) string
GetShaderiv(shader uint32, pname uint32, params *int32) GetShaderiv(shader uint32, pname uint32, params *int32)
GetUniformLocation(program uint32, name string) int32 GetUniformLocation(program uint32, name string) int32
LinkProgram(program uint32) LinkProgram(program uint32)
@ -828,7 +828,6 @@ type GL interface {
StencilFunc(xfunc uint32, ref int32, mask uint32) StencilFunc(xfunc uint32, ref int32, mask uint32)
StencilMask(mask uint32) StencilMask(mask uint32)
StencilOp(fail uint32, zfail uint32, zpass 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) 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) 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) 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 #endif
varying vec2 v_cp; varying vec2 v_cp;
uniform mat3 invmat; uniform mat3 invmat;
uniform sampler1D gradient; uniform sampler2D gradient;
uniform vec2 from, dir; uniform vec2 from, dir;
uniform float len; uniform float len;
uniform float globalAlpha; uniform float globalAlpha;
@ -65,7 +65,7 @@ void main() {
vec2 v = untf.xy - from; vec2 v = untf.xy - from;
float r = dot(v, dir) / len; float r = dot(v, dir) / len;
r = clamp(r, 0.0, 1.0); r = clamp(r, 0.0, 1.0);
vec4 col = texture1D(gradient, r); vec4 col = texture2D(gradient, vec2(r, 0.0));
col.a *= globalAlpha; col.a *= globalAlpha;
gl_FragColor = col; gl_FragColor = col;
}` }`
@ -85,7 +85,7 @@ precision mediump float;
#endif #endif
varying vec2 v_cp; varying vec2 v_cp;
uniform mat3 invmat; uniform mat3 invmat;
uniform sampler1D gradient; uniform sampler2D gradient;
uniform vec2 from, to, dir; uniform vec2 from, to, dir;
uniform float radFrom, radTo; uniform float radFrom, radTo;
uniform float len; uniform float len;
@ -110,7 +110,7 @@ void main() {
} }
float o = max(o1, o2); float o = max(o1, o2);
//float r = radFrom + o * (radTo - radFrom); //float r = radFrom + o * (radTo - radFrom);
vec4 col = texture1D(gradient, o); vec4 col = texture2D(gradient, vec2(o, 0.0));
col.a *= globalAlpha; col.a *= globalAlpha;
gl_FragColor = col; gl_FragColor = col;
}` }`
@ -182,7 +182,7 @@ varying vec2 v_cp;
varying vec2 v_atc; varying vec2 v_atc;
varying vec2 v_texCoord; varying vec2 v_texCoord;
uniform mat3 invmat; uniform mat3 invmat;
uniform sampler1D gradient; uniform sampler2D gradient;
uniform vec2 from, dir; uniform vec2 from, dir;
uniform float len; uniform float len;
uniform sampler2D alphaTex; uniform sampler2D alphaTex;
@ -192,7 +192,7 @@ void main() {
vec2 v = untf.xy - from; vec2 v = untf.xy - from;
float r = dot(v, dir) / len; float r = dot(v, dir) / len;
r = clamp(r, 0.0, 1.0); 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; col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
gl_FragColor = col; gl_FragColor = col;
}` }`
@ -215,7 +215,7 @@ precision mediump float;
varying vec2 v_cp; varying vec2 v_cp;
varying vec2 v_atc; varying vec2 v_atc;
uniform mat3 invmat; uniform mat3 invmat;
uniform sampler1D gradient; uniform sampler2D gradient;
uniform vec2 from, to, dir; uniform vec2 from, to, dir;
uniform float radFrom, radTo; uniform float radFrom, radTo;
uniform float len; uniform float len;
@ -241,7 +241,7 @@ void main() {
} }
float o = max(o1, o2); float o = max(o1, o2);
float r = radFrom + o * (radTo - radFrom); 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; col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
gl_FragColor = col; gl_FragColor = col;
}` }`