reduced the backend/gogl/gl package to GLES2 functions; added android support; adapted android example
This commit is contained in:
parent
549a6f2c2e
commit
654d9b1796
5 changed files with 314 additions and 5999 deletions
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
|
|
303
backend/gogl/gl/procaddr_android.go
Normal file
303
backend/gogl/gl/procaddr_android.go
Normal 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
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in a new issue