reduced the backend/gogl/gl package to GLES2 functions; added android support; adapted android example

This commit is contained in:
Thomas Friedel 2019-02-24 14:31:03 +01:00
parent 549a6f2c2e
commit 654d9b1796
5 changed files with 314 additions and 5999 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,4 @@
// +build !android
// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
// This file implements GlowGetProcAddress for every supported platform. The

View file

@ -0,0 +1,303 @@
// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
// This file implements GlowGetProcAddress for every supported platform. The
// correct version is chosen automatically based on build tags:
//
// windows: WGL
// darwin: CGL
// linux freebsd: GLX
//
// Use of EGL instead of the platform's default (listed above) is made possible
// via the "egl" build tag.
//
// It is also possible to install your own function outside this package for
// retrieving OpenGL function pointers, to do this see InitWithProcAddrFunc.
package gl
/*
#cgo android LDFLAGS: -lGLESv2
#include <GLES2/gl2.h>
*/
import "C"
import "unsafe"
func getProcAddress(namea string) unsafe.Pointer {
switch namea {
case "glActiveTexture":
return unsafe.Pointer(C.glActiveTexture)
case "glAttachShader":
return unsafe.Pointer(C.glAttachShader)
case "glBindAttribLocation":
return unsafe.Pointer(C.glBindAttribLocation)
case "glBindBuffer":
return unsafe.Pointer(C.glBindBuffer)
case "glBindFramebuffer":
return unsafe.Pointer(C.glBindFramebuffer)
case "glBindRenderbuffer":
return unsafe.Pointer(C.glBindRenderbuffer)
case "glBindTexture":
return unsafe.Pointer(C.glBindTexture)
case "glBlendColor":
return unsafe.Pointer(C.glBlendColor)
case "glBlendEquation":
return unsafe.Pointer(C.glBlendEquation)
case "glBlendEquationSeparate":
return unsafe.Pointer(C.glBlendEquationSeparate)
case "glBlendFunc":
return unsafe.Pointer(C.glBlendFunc)
case "glBlendFuncSeparate":
return unsafe.Pointer(C.glBlendFuncSeparate)
case "glBufferData":
return unsafe.Pointer(C.glBufferData)
case "glBufferSubData":
return unsafe.Pointer(C.glBufferSubData)
case "glCheckFramebufferStatus":
return unsafe.Pointer(C.glCheckFramebufferStatus)
case "glClear":
return unsafe.Pointer(C.glClear)
case "glClearColor":
return unsafe.Pointer(C.glClearColor)
case "glClearStencil":
return unsafe.Pointer(C.glClearStencil)
case "glColorMask":
return unsafe.Pointer(C.glColorMask)
case "glCompileShader":
return unsafe.Pointer(C.glCompileShader)
case "glCompressedTexImage2D":
return unsafe.Pointer(C.glCompressedTexImage2D)
case "glCompressedTexSubImage2D":
return unsafe.Pointer(C.glCompressedTexSubImage2D)
case "glCopyTexImage2D":
return unsafe.Pointer(C.glCopyTexImage2D)
case "glCopyTexSubImage2D":
return unsafe.Pointer(C.glCopyTexSubImage2D)
case "glCreateProgram":
return unsafe.Pointer(C.glCreateProgram)
case "glCreateShader":
return unsafe.Pointer(C.glCreateShader)
case "glCullFace":
return unsafe.Pointer(C.glCullFace)
case "glDeleteBuffers":
return unsafe.Pointer(C.glDeleteBuffers)
case "glDeleteFramebuffers":
return unsafe.Pointer(C.glDeleteFramebuffers)
case "glDeleteProgram":
return unsafe.Pointer(C.glDeleteProgram)
case "glDeleteRenderbuffers":
return unsafe.Pointer(C.glDeleteRenderbuffers)
case "glDeleteShader":
return unsafe.Pointer(C.glDeleteShader)
case "glDeleteTextures":
return unsafe.Pointer(C.glDeleteTextures)
case "glDepthFunc":
return unsafe.Pointer(C.glDepthFunc)
case "glDepthMask":
return unsafe.Pointer(C.glDepthMask)
case "glDetachShader":
return unsafe.Pointer(C.glDetachShader)
case "glDisable":
return unsafe.Pointer(C.glDisable)
case "glDisableVertexAttribArray":
return unsafe.Pointer(C.glDisableVertexAttribArray)
case "glDrawArrays":
return unsafe.Pointer(C.glDrawArrays)
case "glDrawElements":
return unsafe.Pointer(C.glDrawElements)
case "glEnable":
return unsafe.Pointer(C.glEnable)
case "glEnableVertexAttribArray":
return unsafe.Pointer(C.glEnableVertexAttribArray)
case "glFinish":
return unsafe.Pointer(C.glFinish)
case "glFlush":
return unsafe.Pointer(C.glFlush)
case "glFramebufferRenderbuffer":
return unsafe.Pointer(C.glFramebufferRenderbuffer)
case "glFramebufferTexture2D":
return unsafe.Pointer(C.glFramebufferTexture2D)
case "glFrontFace":
return unsafe.Pointer(C.glFrontFace)
case "glGenBuffers":
return unsafe.Pointer(C.glGenBuffers)
case "glGenFramebuffers":
return unsafe.Pointer(C.glGenFramebuffers)
case "glGenRenderbuffers":
return unsafe.Pointer(C.glGenRenderbuffers)
case "glGenTextures":
return unsafe.Pointer(C.glGenTextures)
case "glGenerateMipmap":
return unsafe.Pointer(C.glGenerateMipmap)
case "glGetActiveAttrib":
return unsafe.Pointer(C.glGetActiveAttrib)
case "glGetActiveUniform":
return unsafe.Pointer(C.glGetActiveUniform)
case "glGetAttachedShaders":
return unsafe.Pointer(C.glGetAttachedShaders)
case "glGetAttribLocation":
return unsafe.Pointer(C.glGetAttribLocation)
case "glGetBooleanv":
return unsafe.Pointer(C.glGetBooleanv)
case "glGetBufferParameteriv":
return unsafe.Pointer(C.glGetBufferParameteriv)
case "glGetError":
return unsafe.Pointer(C.glGetError)
case "glGetFloatv":
return unsafe.Pointer(C.glGetFloatv)
case "glGetFramebufferAttachmentParameteriv":
return unsafe.Pointer(C.glGetFramebufferAttachmentParameteriv)
case "glGetIntegerv":
return unsafe.Pointer(C.glGetIntegerv)
case "glGetProgramInfoLog":
return unsafe.Pointer(C.glGetProgramInfoLog)
case "glGetProgramiv":
return unsafe.Pointer(C.glGetProgramiv)
case "glGetRenderbufferParameteriv":
return unsafe.Pointer(C.glGetRenderbufferParameteriv)
case "glGetShaderInfoLog":
return unsafe.Pointer(C.glGetShaderInfoLog)
case "glGetShaderSource":
return unsafe.Pointer(C.glGetShaderSource)
case "glGetShaderiv":
return unsafe.Pointer(C.glGetShaderiv)
case "glGetString":
return unsafe.Pointer(C.glGetString)
case "glGetTexParameterfv":
return unsafe.Pointer(C.glGetTexParameterfv)
case "glGetTexParameteriv":
return unsafe.Pointer(C.glGetTexParameteriv)
case "glGetUniformLocation":
return unsafe.Pointer(C.glGetUniformLocation)
case "glGetUniformfv":
return unsafe.Pointer(C.glGetUniformfv)
case "glGetUniformiv":
return unsafe.Pointer(C.glGetUniformiv)
case "glGetVertexAttribPointerv":
return unsafe.Pointer(C.glGetVertexAttribPointerv)
case "glGetVertexAttribfv":
return unsafe.Pointer(C.glGetVertexAttribfv)
case "glGetVertexAttribiv":
return unsafe.Pointer(C.glGetVertexAttribiv)
case "glHint":
return unsafe.Pointer(C.glHint)
case "glIsBuffer":
return unsafe.Pointer(C.glIsBuffer)
case "glIsEnabled":
return unsafe.Pointer(C.glIsEnabled)
case "glIsFramebuffer":
return unsafe.Pointer(C.glIsFramebuffer)
case "glIsProgram":
return unsafe.Pointer(C.glIsProgram)
case "glIsRenderbuffer":
return unsafe.Pointer(C.glIsRenderbuffer)
case "glIsShader":
return unsafe.Pointer(C.glIsShader)
case "glIsTexture":
return unsafe.Pointer(C.glIsTexture)
case "glLineWidth":
return unsafe.Pointer(C.glLineWidth)
case "glLinkProgram":
return unsafe.Pointer(C.glLinkProgram)
case "glPixelStorei":
return unsafe.Pointer(C.glPixelStorei)
case "glPolygonOffset":
return unsafe.Pointer(C.glPolygonOffset)
case "glReadPixels":
return unsafe.Pointer(C.glReadPixels)
case "glRenderbufferStorage":
return unsafe.Pointer(C.glRenderbufferStorage)
case "glSampleCoverage":
return unsafe.Pointer(C.glSampleCoverage)
case "glScissor":
return unsafe.Pointer(C.glScissor)
case "glShaderSource":
return unsafe.Pointer(C.glShaderSource)
case "glStencilFunc":
return unsafe.Pointer(C.glStencilFunc)
case "glStencilFuncSeparate":
return unsafe.Pointer(C.glStencilFuncSeparate)
case "glStencilMask":
return unsafe.Pointer(C.glStencilMask)
case "glStencilMaskSeparate":
return unsafe.Pointer(C.glStencilMaskSeparate)
case "glStencilOp":
return unsafe.Pointer(C.glStencilOp)
case "glStencilOpSeparate":
return unsafe.Pointer(C.glStencilOpSeparate)
case "glTexImage2D":
return unsafe.Pointer(C.glTexImage2D)
case "glTexParameterf":
return unsafe.Pointer(C.glTexParameterf)
case "glTexParameterfv":
return unsafe.Pointer(C.glTexParameterfv)
case "glTexParameteri":
return unsafe.Pointer(C.glTexParameteri)
case "glTexParameteriv":
return unsafe.Pointer(C.glTexParameteriv)
case "glTexSubImage2D":
return unsafe.Pointer(C.glTexSubImage2D)
case "glUniform1f":
return unsafe.Pointer(C.glUniform1f)
case "glUniform1fv":
return unsafe.Pointer(C.glUniform1fv)
case "glUniform1i":
return unsafe.Pointer(C.glUniform1i)
case "glUniform1iv":
return unsafe.Pointer(C.glUniform1iv)
case "glUniform2f":
return unsafe.Pointer(C.glUniform2f)
case "glUniform2fv":
return unsafe.Pointer(C.glUniform2fv)
case "glUniform2i":
return unsafe.Pointer(C.glUniform2i)
case "glUniform2iv":
return unsafe.Pointer(C.glUniform2iv)
case "glUniform3f":
return unsafe.Pointer(C.glUniform3f)
case "glUniform3fv":
return unsafe.Pointer(C.glUniform3fv)
case "glUniform3i":
return unsafe.Pointer(C.glUniform3i)
case "glUniform3iv":
return unsafe.Pointer(C.glUniform3iv)
case "glUniform4f":
return unsafe.Pointer(C.glUniform4f)
case "glUniform4fv":
return unsafe.Pointer(C.glUniform4fv)
case "glUniform4i":
return unsafe.Pointer(C.glUniform4i)
case "glUniform4iv":
return unsafe.Pointer(C.glUniform4iv)
case "glUniformMatrix2fv":
return unsafe.Pointer(C.glUniformMatrix2fv)
case "glUniformMatrix3fv":
return unsafe.Pointer(C.glUniformMatrix3fv)
case "glUniformMatrix4fv":
return unsafe.Pointer(C.glUniformMatrix4fv)
case "glUseProgram":
return unsafe.Pointer(C.glUseProgram)
case "glValidateProgram":
return unsafe.Pointer(C.glValidateProgram)
case "glVertexAttrib1f":
return unsafe.Pointer(C.glVertexAttrib1f)
case "glVertexAttrib1fv":
return unsafe.Pointer(C.glVertexAttrib1fv)
case "glVertexAttrib2f":
return unsafe.Pointer(C.glVertexAttrib2f)
case "glVertexAttrib2fv":
return unsafe.Pointer(C.glVertexAttrib2fv)
case "glVertexAttrib3f":
return unsafe.Pointer(C.glVertexAttrib3f)
case "glVertexAttrib3fv":
return unsafe.Pointer(C.glVertexAttrib3fv)
case "glVertexAttrib4f":
return unsafe.Pointer(C.glVertexAttrib4f)
case "glVertexAttrib4fv":
return unsafe.Pointer(C.glVertexAttrib4fv)
case "glVertexAttribPointer":
return unsafe.Pointer(C.glVertexAttribPointer)
case "glViewport":
return unsafe.Pointer(C.glViewport)
}
return nil
}

View file

@ -1 +1,3 @@
As of this writing, gomobile does not support go modules. In this case this project can only be compiled while it is in the GOPATH/src directory.
The go bindings are generated with the ```gomobile bind -target android``` command, which results in a .aar and a .jar file. These should be placed in the CanvasAndroidExample/app/libs directory, and then the project should compile.

View file

@ -2,10 +2,9 @@ package canvasandroidexample
import (
"math"
"time"
"github.com/tfriedel6/canvas"
"github.com/tfriedel6/canvas/glimpl/android"
"github.com/tfriedel6/canvas/backend/gogl"
)
var cv *canvas.Canvas
@ -19,12 +18,11 @@ func OnSurfaceCreated() {
}
func OnSurfaceChanged(w, h int) {
err := canvas.LoadGL(glimplandroid.GLImpl{})
backend, err := goglbackend.New(0, 0, w, h)
if err != nil {
time.Sleep(100 * time.Millisecond)
panic(err)
}
cv = canvas.New(0, 0, w, h)
cv = canvas.New(backend)
}
func OnDrawFrame() {