internal/graphicsdriver/opengl: Add APIs for stencil buffers

Updates #1684
This commit is contained in:
Hajime Hoshi 2021-07-05 00:10:48 +09:00
parent b8bf277825
commit 5c4d3325f6
8 changed files with 357 additions and 0 deletions

View File

@ -24,11 +24,13 @@ const (
ONE_MINUS_DST_ALPHA = 0x0305 ONE_MINUS_DST_ALPHA = 0x0305
DST_COLOR = 0x0306 DST_COLOR = 0x0306
ALWAYS = 0x0207
ARRAY_BUFFER = 0x8892 ARRAY_BUFFER = 0x8892
BLEND = 0x0BE2 BLEND = 0x0BE2
CLAMP_TO_EDGE = 0x812F CLAMP_TO_EDGE = 0x812F
COLOR_ATTACHMENT0 = 0x8CE0 COLOR_ATTACHMENT0 = 0x8CE0
COMPILE_STATUS = 0x8B81 COMPILE_STATUS = 0x8B81
DEPTH24_STENCIL8 = 0x88F0
DYNAMIC_DRAW = 0x88E8 DYNAMIC_DRAW = 0x88E8
ELEMENT_ARRAY_BUFFER = 0x8893 ELEMENT_ARRAY_BUFFER = 0x8893
FALSE = 0 FALSE = 0
@ -38,15 +40,22 @@ const (
FRAMEBUFFER_BINDING = 0x8CA6 FRAMEBUFFER_BINDING = 0x8CA6
FRAMEBUFFER_COMPLETE = 0x8CD5 FRAMEBUFFER_COMPLETE = 0x8CD5
INFO_LOG_LENGTH = 0x8B84 INFO_LOG_LENGTH = 0x8B84
INVERT = 0x150A
KEEP = 0x1E00
LINK_STATUS = 0x8B82 LINK_STATUS = 0x8B82
MAX_TEXTURE_SIZE = 0x0D33 MAX_TEXTURE_SIZE = 0x0D33
NEAREST = 0x2600 NEAREST = 0x2600
NO_ERROR = 0 NO_ERROR = 0
NOTEQUAL = 0x0205
PIXEL_PACK_BUFFER = 0x88EB PIXEL_PACK_BUFFER = 0x88EB
PIXEL_UNPACK_BUFFER = 0x88EC PIXEL_UNPACK_BUFFER = 0x88EC
READ_WRITE = 0x88BA READ_WRITE = 0x88BA
RENDERBUFFER = 0x8D41
RGBA = 0x1908 RGBA = 0x1908
SHORT = 0x1402 SHORT = 0x1402
STENCIL_ATTACHMENT = 0x8D20
STENCIL_BUFFER_BIT = 0x0400
STENCIL_TEST = 0x0B90
STREAM_DRAW = 0x88E0 STREAM_DRAW = 0x88E0
TEXTURE0 = 0x84C0 TEXTURE0 = 0x84C0
TEXTURE_2D = 0x0DE1 TEXTURE_2D = 0x0DE1

View File

@ -101,27 +101,34 @@ package gl
// typedef void (APIENTRYP GPBINDATTRIBLOCATION)(GLuint program, GLuint index, const GLchar * name); // typedef void (APIENTRYP GPBINDATTRIBLOCATION)(GLuint program, GLuint index, const GLchar * name);
// typedef void (APIENTRYP GPBINDBUFFER)(GLenum target, GLuint buffer); // typedef void (APIENTRYP GPBINDBUFFER)(GLenum target, GLuint buffer);
// typedef void (APIENTRYP GPBINDFRAMEBUFFEREXT)(GLenum target, GLuint framebuffer); // typedef void (APIENTRYP GPBINDFRAMEBUFFEREXT)(GLenum target, GLuint framebuffer);
// typedef void (APIENTRYP GPBINDRENDERBUFFEREXT)(GLenum target, GLuint renderbuffer);
// typedef void (APIENTRYP GPBINDTEXTURE)(GLenum target, GLuint texture); // typedef void (APIENTRYP GPBINDTEXTURE)(GLenum target, GLuint texture);
// typedef void (APIENTRYP GPBLENDFUNC)(GLenum sfactor, GLenum dfactor); // typedef void (APIENTRYP GPBLENDFUNC)(GLenum sfactor, GLenum dfactor);
// typedef void (APIENTRYP GPBUFFERDATA)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); // typedef void (APIENTRYP GPBUFFERDATA)(GLenum target, GLsizeiptr size, const void * data, GLenum usage);
// typedef void (APIENTRYP GPBUFFERSUBDATA)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); // typedef void (APIENTRYP GPBUFFERSUBDATA)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data);
// typedef GLenum (APIENTRYP GPCHECKFRAMEBUFFERSTATUSEXT)(GLenum target); // typedef GLenum (APIENTRYP GPCHECKFRAMEBUFFERSTATUSEXT)(GLenum target);
// typedef void (APIENTRYP GPCLEAR)(GLbitfield mask);
// typedef void (APIENTRYP GPCOLORMASK)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
// typedef void (APIENTRYP GPCOMPILESHADER)(GLuint shader); // typedef void (APIENTRYP GPCOMPILESHADER)(GLuint shader);
// typedef GLuint (APIENTRYP GPCREATEPROGRAM)(); // typedef GLuint (APIENTRYP GPCREATEPROGRAM)();
// typedef GLuint (APIENTRYP GPCREATESHADER)(GLenum type); // typedef GLuint (APIENTRYP GPCREATESHADER)(GLenum type);
// typedef void (APIENTRYP GPDELETEBUFFERS)(GLsizei n, const GLuint * buffers); // typedef void (APIENTRYP GPDELETEBUFFERS)(GLsizei n, const GLuint * buffers);
// typedef void (APIENTRYP GPDELETEFRAMEBUFFERSEXT)(GLsizei n, const GLuint * framebuffers); // typedef void (APIENTRYP GPDELETEFRAMEBUFFERSEXT)(GLsizei n, const GLuint * framebuffers);
// typedef void (APIENTRYP GPDELETEPROGRAM)(GLuint program); // typedef void (APIENTRYP GPDELETEPROGRAM)(GLuint program);
// typedef void (APIENTRYP GPDELETERENDERBUFFERSEXT)(GLsizei n, const GLuint * renderbuffers);
// typedef void (APIENTRYP GPDELETESHADER)(GLuint shader); // typedef void (APIENTRYP GPDELETESHADER)(GLuint shader);
// typedef void (APIENTRYP GPDELETETEXTURES)(GLsizei n, const GLuint * textures); // typedef void (APIENTRYP GPDELETETEXTURES)(GLsizei n, const GLuint * textures);
// typedef void (APIENTRYP GPDISABLE)(GLenum cap);
// typedef void (APIENTRYP GPDISABLEVERTEXATTRIBARRAY)(GLuint index); // typedef void (APIENTRYP GPDISABLEVERTEXATTRIBARRAY)(GLuint index);
// typedef void (APIENTRYP GPDRAWELEMENTS)(GLenum mode, GLsizei count, GLenum type, const uintptr_t indices); // typedef void (APIENTRYP GPDRAWELEMENTS)(GLenum mode, GLsizei count, GLenum type, const uintptr_t indices);
// typedef void (APIENTRYP GPENABLE)(GLenum cap); // typedef void (APIENTRYP GPENABLE)(GLenum cap);
// typedef void (APIENTRYP GPENABLEVERTEXATTRIBARRAY)(GLuint index); // typedef void (APIENTRYP GPENABLEVERTEXATTRIBARRAY)(GLuint index);
// typedef void (APIENTRYP GPFLUSH)(); // typedef void (APIENTRYP GPFLUSH)();
// typedef void (APIENTRYP GPFRAMEBUFFERRENDERBUFFEREXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
// typedef void (APIENTRYP GPFRAMEBUFFERTEXTURE2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); // typedef void (APIENTRYP GPFRAMEBUFFERTEXTURE2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
// typedef void (APIENTRYP GPGENBUFFERS)(GLsizei n, GLuint * buffers); // typedef void (APIENTRYP GPGENBUFFERS)(GLsizei n, GLuint * buffers);
// typedef void (APIENTRYP GPGENFRAMEBUFFERSEXT)(GLsizei n, GLuint * framebuffers); // typedef void (APIENTRYP GPGENFRAMEBUFFERSEXT)(GLsizei n, GLuint * framebuffers);
// typedef void (APIENTRYP GPGENRENDERBUFFERSEXT)(GLsizei n, GLuint * renderbuffers);
// typedef void (APIENTRYP GPGENTEXTURES)(GLsizei n, GLuint * textures); // typedef void (APIENTRYP GPGENTEXTURES)(GLsizei n, GLuint * textures);
// typedef void (APIENTRYP GPGETBUFFERSUBDATA)(GLenum target, GLintptr offset, GLsizeiptr size, void * data); // typedef void (APIENTRYP GPGETBUFFERSUBDATA)(GLenum target, GLintptr offset, GLsizeiptr size, void * data);
// typedef void (APIENTRYP GPGETDOUBLEI_V)(GLenum target, GLuint index, GLdouble * data); // typedef void (APIENTRYP GPGETDOUBLEI_V)(GLenum target, GLuint index, GLdouble * data);
@ -145,12 +152,16 @@ package gl
// typedef void (APIENTRYP GPGETVERTEXARRAYPOINTERI_VEXT)(GLuint vaobj, GLuint index, GLenum pname, void ** param); // typedef void (APIENTRYP GPGETVERTEXARRAYPOINTERI_VEXT)(GLuint vaobj, GLuint index, GLenum pname, void ** param);
// typedef GLboolean (APIENTRYP GPISFRAMEBUFFEREXT)(GLuint framebuffer); // typedef GLboolean (APIENTRYP GPISFRAMEBUFFEREXT)(GLuint framebuffer);
// typedef GLboolean (APIENTRYP GPISPROGRAM)(GLuint program); // typedef GLboolean (APIENTRYP GPISPROGRAM)(GLuint program);
// typedef GLboolean (APIENTRYP GPISRENDERBUFFEREXT)(GLuint renderbuffer);
// typedef GLboolean (APIENTRYP GPISTEXTURE)(GLuint texture); // typedef GLboolean (APIENTRYP GPISTEXTURE)(GLuint texture);
// typedef void (APIENTRYP GPLINKPROGRAM)(GLuint program); // typedef void (APIENTRYP GPLINKPROGRAM)(GLuint program);
// typedef void (APIENTRYP GPPIXELSTOREI)(GLenum pname, GLint param); // typedef void (APIENTRYP GPPIXELSTOREI)(GLenum pname, GLint param);
// typedef void (APIENTRYP GPREADPIXELS)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); // typedef void (APIENTRYP GPREADPIXELS)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels);
// typedef void (APIENTRYP GPRENDERBUFFERSTORAGEEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
// typedef void (APIENTRYP GPSCISSOR)(GLint x, GLint y, GLsizei width, GLsizei height); // typedef void (APIENTRYP GPSCISSOR)(GLint x, GLint y, GLsizei width, GLsizei height);
// typedef void (APIENTRYP GPSHADERSOURCE)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); // typedef void (APIENTRYP GPSHADERSOURCE)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length);
// typedef void (APIENTRYP GPSTENCILFUNC)(GLenum func, GLint ref, GLuint mask);
// typedef void (APIENTRYP GPSTENCILOP)(GLenum fail, GLenum zfail, GLenum zpass);
// typedef void (APIENTRYP GPTEXIMAGE2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); // typedef void (APIENTRYP GPTEXIMAGE2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
// typedef void (APIENTRYP GPTEXPARAMETERI)(GLenum target, GLenum pname, GLint param); // typedef void (APIENTRYP GPTEXPARAMETERI)(GLenum target, GLenum pname, GLint param);
// typedef void (APIENTRYP GPTEXSUBIMAGE2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); // typedef void (APIENTRYP GPTEXSUBIMAGE2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
@ -182,6 +193,9 @@ package gl
// static void glowBindFramebufferEXT(GPBINDFRAMEBUFFEREXT fnptr, GLenum target, GLuint framebuffer) { // static void glowBindFramebufferEXT(GPBINDFRAMEBUFFEREXT fnptr, GLenum target, GLuint framebuffer) {
// (*fnptr)(target, framebuffer); // (*fnptr)(target, framebuffer);
// } // }
// static void glowBindRenderbufferEXT(GPBINDRENDERBUFFEREXT fnptr, GLenum target, GLuint renderbuffer) {
// (*fnptr)(target, renderbuffer);
// }
// static void glowBindTexture(GPBINDTEXTURE fnptr, GLenum target, GLuint texture) { // static void glowBindTexture(GPBINDTEXTURE fnptr, GLenum target, GLuint texture) {
// (*fnptr)(target, texture); // (*fnptr)(target, texture);
// } // }
@ -197,6 +211,12 @@ package gl
// static GLenum glowCheckFramebufferStatusEXT(GPCHECKFRAMEBUFFERSTATUSEXT fnptr, GLenum target) { // static GLenum glowCheckFramebufferStatusEXT(GPCHECKFRAMEBUFFERSTATUSEXT fnptr, GLenum target) {
// return (*fnptr)(target); // return (*fnptr)(target);
// } // }
// static void glowClear(GPCLEAR fnptr, GLbitfield mask) {
// (*fnptr)(mask);
// }
// static void glowColorMask(GPCOLORMASK fnptr, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
// (*fnptr)(red, green, blue, alpha);
// }
// static void glowCompileShader(GPCOMPILESHADER fnptr, GLuint shader) { // static void glowCompileShader(GPCOMPILESHADER fnptr, GLuint shader) {
// (*fnptr)(shader); // (*fnptr)(shader);
// } // }
@ -215,12 +235,18 @@ package gl
// static void glowDeleteProgram(GPDELETEPROGRAM fnptr, GLuint program) { // static void glowDeleteProgram(GPDELETEPROGRAM fnptr, GLuint program) {
// (*fnptr)(program); // (*fnptr)(program);
// } // }
// static void glowDeleteRenderbuffersEXT(GPDELETERENDERBUFFERSEXT fnptr, GLsizei n, const GLuint * renderbuffers) {
// (*fnptr)(n, renderbuffers);
// }
// static void glowDeleteShader(GPDELETESHADER fnptr, GLuint shader) { // static void glowDeleteShader(GPDELETESHADER fnptr, GLuint shader) {
// (*fnptr)(shader); // (*fnptr)(shader);
// } // }
// static void glowDeleteTextures(GPDELETETEXTURES fnptr, GLsizei n, const GLuint * textures) { // static void glowDeleteTextures(GPDELETETEXTURES fnptr, GLsizei n, const GLuint * textures) {
// (*fnptr)(n, textures); // (*fnptr)(n, textures);
// } // }
// static void glowDisable(GPDISABLE fnptr, GLenum cap) {
// (*fnptr)(cap);
// }
// static void glowDisableVertexAttribArray(GPDISABLEVERTEXATTRIBARRAY fnptr, GLuint index) { // static void glowDisableVertexAttribArray(GPDISABLEVERTEXATTRIBARRAY fnptr, GLuint index) {
// (*fnptr)(index); // (*fnptr)(index);
// } // }
@ -236,6 +262,9 @@ package gl
// static void glowFlush(GPFLUSH fnptr) { // static void glowFlush(GPFLUSH fnptr) {
// (*fnptr)(); // (*fnptr)();
// } // }
// static void glowFramebufferRenderbufferEXT(GPFRAMEBUFFERRENDERBUFFEREXT fnptr, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
// (*fnptr)(target, attachment, renderbuffertarget, renderbuffer);
// }
// static void glowFramebufferTexture2DEXT(GPFRAMEBUFFERTEXTURE2DEXT fnptr, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { // static void glowFramebufferTexture2DEXT(GPFRAMEBUFFERTEXTURE2DEXT fnptr, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
// (*fnptr)(target, attachment, textarget, texture, level); // (*fnptr)(target, attachment, textarget, texture, level);
// } // }
@ -245,6 +274,9 @@ package gl
// static void glowGenFramebuffersEXT(GPGENFRAMEBUFFERSEXT fnptr, GLsizei n, GLuint * framebuffers) { // static void glowGenFramebuffersEXT(GPGENFRAMEBUFFERSEXT fnptr, GLsizei n, GLuint * framebuffers) {
// (*fnptr)(n, framebuffers); // (*fnptr)(n, framebuffers);
// } // }
// static void glowGenRenderbuffersEXT(GPGENRENDERBUFFERSEXT fnptr, GLsizei n, GLuint * renderbuffers) {
// (*fnptr)(n, renderbuffers);
// }
// static void glowGenTextures(GPGENTEXTURES fnptr, GLsizei n, GLuint * textures) { // static void glowGenTextures(GPGENTEXTURES fnptr, GLsizei n, GLuint * textures) {
// (*fnptr)(n, textures); // (*fnptr)(n, textures);
// } // }
@ -314,6 +346,9 @@ package gl
// static GLboolean glowIsProgram(GPISPROGRAM fnptr, GLuint program) { // static GLboolean glowIsProgram(GPISPROGRAM fnptr, GLuint program) {
// return (*fnptr)(program); // return (*fnptr)(program);
// } // }
// static GLboolean glowIsRenderbufferEXT(GPISRENDERBUFFEREXT fnptr, GLuint renderbuffer) {
// return (*fnptr)(renderbuffer);
// }
// static GLboolean glowIsTexture(GPISTEXTURE fnptr, GLuint texture) { // static GLboolean glowIsTexture(GPISTEXTURE fnptr, GLuint texture) {
// return (*fnptr)(texture); // return (*fnptr)(texture);
// } // }
@ -326,12 +361,21 @@ package gl
// static void glowReadPixels(GPREADPIXELS fnptr, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels) { // static void glowReadPixels(GPREADPIXELS fnptr, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels) {
// (*fnptr)(x, y, width, height, format, type, pixels); // (*fnptr)(x, y, width, height, format, type, pixels);
// } // }
// static void glowRenderbufferStorageEXT(GPRENDERBUFFERSTORAGEEXT fnptr, GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
// (*fnptr)(target, internalformat, width, height);
// }
// static void glowScissor(GPSCISSOR fnptr, GLint x, GLint y, GLsizei width, GLsizei height) { // static void glowScissor(GPSCISSOR fnptr, GLint x, GLint y, GLsizei width, GLsizei height) {
// (*fnptr)(x, y, width, height); // (*fnptr)(x, y, width, height);
// } // }
// static void glowShaderSource(GPSHADERSOURCE fnptr, GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length) { // static void glowShaderSource(GPSHADERSOURCE fnptr, GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length) {
// (*fnptr)(shader, count, string, length); // (*fnptr)(shader, count, string, length);
// } // }
// static void glowStencilFunc(GPSTENCILFUNC fnptr, GLenum func, GLint ref, GLuint mask) {
// (*fnptr)(func, ref, mask);
// }
// static void glowStencilOp(GPSTENCILOP fnptr, GLenum fail, GLenum zfail, GLenum zpass) {
// (*fnptr)(fail, zfail, zpass);
// }
// static void glowTexImage2D(GPTEXIMAGE2D fnptr, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels) { // static void glowTexImage2D(GPTEXIMAGE2D fnptr, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels) {
// (*fnptr)(target, level, internalformat, width, height, border, format, type, pixels); // (*fnptr)(target, level, internalformat, width, height, border, format, type, pixels);
// } // }
@ -390,27 +434,34 @@ var (
gpBindAttribLocation C.GPBINDATTRIBLOCATION gpBindAttribLocation C.GPBINDATTRIBLOCATION
gpBindBuffer C.GPBINDBUFFER gpBindBuffer C.GPBINDBUFFER
gpBindFramebufferEXT C.GPBINDFRAMEBUFFEREXT gpBindFramebufferEXT C.GPBINDFRAMEBUFFEREXT
gpBindRenderbufferEXT C.GPBINDRENDERBUFFEREXT
gpBindTexture C.GPBINDTEXTURE gpBindTexture C.GPBINDTEXTURE
gpBlendFunc C.GPBLENDFUNC gpBlendFunc C.GPBLENDFUNC
gpBufferData C.GPBUFFERDATA gpBufferData C.GPBUFFERDATA
gpBufferSubData C.GPBUFFERSUBDATA gpBufferSubData C.GPBUFFERSUBDATA
gpCheckFramebufferStatusEXT C.GPCHECKFRAMEBUFFERSTATUSEXT gpCheckFramebufferStatusEXT C.GPCHECKFRAMEBUFFERSTATUSEXT
gpClear C.GPCLEAR
gpColorMask C.GPCOLORMASK
gpCompileShader C.GPCOMPILESHADER gpCompileShader C.GPCOMPILESHADER
gpCreateProgram C.GPCREATEPROGRAM gpCreateProgram C.GPCREATEPROGRAM
gpCreateShader C.GPCREATESHADER gpCreateShader C.GPCREATESHADER
gpDeleteBuffers C.GPDELETEBUFFERS gpDeleteBuffers C.GPDELETEBUFFERS
gpDeleteFramebuffersEXT C.GPDELETEFRAMEBUFFERSEXT gpDeleteFramebuffersEXT C.GPDELETEFRAMEBUFFERSEXT
gpDeleteProgram C.GPDELETEPROGRAM gpDeleteProgram C.GPDELETEPROGRAM
gpDeleteRenderbuffersEXT C.GPDELETERENDERBUFFERSEXT
gpDeleteShader C.GPDELETESHADER gpDeleteShader C.GPDELETESHADER
gpDeleteTextures C.GPDELETETEXTURES gpDeleteTextures C.GPDELETETEXTURES
gpDisable C.GPDISABLE
gpDisableVertexAttribArray C.GPDISABLEVERTEXATTRIBARRAY gpDisableVertexAttribArray C.GPDISABLEVERTEXATTRIBARRAY
gpDrawElements C.GPDRAWELEMENTS gpDrawElements C.GPDRAWELEMENTS
gpEnable C.GPENABLE gpEnable C.GPENABLE
gpEnableVertexAttribArray C.GPENABLEVERTEXATTRIBARRAY gpEnableVertexAttribArray C.GPENABLEVERTEXATTRIBARRAY
gpFlush C.GPFLUSH gpFlush C.GPFLUSH
gpFramebufferRenderbufferEXT C.GPFRAMEBUFFERRENDERBUFFEREXT
gpFramebufferTexture2DEXT C.GPFRAMEBUFFERTEXTURE2DEXT gpFramebufferTexture2DEXT C.GPFRAMEBUFFERTEXTURE2DEXT
gpGenBuffers C.GPGENBUFFERS gpGenBuffers C.GPGENBUFFERS
gpGenFramebuffersEXT C.GPGENFRAMEBUFFERSEXT gpGenFramebuffersEXT C.GPGENFRAMEBUFFERSEXT
gpGenRenderbuffersEXT C.GPGENRENDERBUFFERSEXT
gpGenTextures C.GPGENTEXTURES gpGenTextures C.GPGENTEXTURES
gpGetBufferSubData C.GPGETBUFFERSUBDATA gpGetBufferSubData C.GPGETBUFFERSUBDATA
gpGetDoublei_v C.GPGETDOUBLEI_V gpGetDoublei_v C.GPGETDOUBLEI_V
@ -434,12 +485,16 @@ var (
gpGetVertexArrayPointeri_vEXT C.GPGETVERTEXARRAYPOINTERI_VEXT gpGetVertexArrayPointeri_vEXT C.GPGETVERTEXARRAYPOINTERI_VEXT
gpIsFramebufferEXT C.GPISFRAMEBUFFEREXT gpIsFramebufferEXT C.GPISFRAMEBUFFEREXT
gpIsProgram C.GPISPROGRAM gpIsProgram C.GPISPROGRAM
gpIsRenderbufferEXT C.GPISRENDERBUFFEREXT
gpIsTexture C.GPISTEXTURE gpIsTexture C.GPISTEXTURE
gpLinkProgram C.GPLINKPROGRAM gpLinkProgram C.GPLINKPROGRAM
gpPixelStorei C.GPPIXELSTOREI gpPixelStorei C.GPPIXELSTOREI
gpReadPixels C.GPREADPIXELS gpReadPixels C.GPREADPIXELS
gpRenderbufferStorageEXT C.GPRENDERBUFFERSTORAGEEXT
gpScissor C.GPSCISSOR gpScissor C.GPSCISSOR
gpShaderSource C.GPSHADERSOURCE gpShaderSource C.GPSHADERSOURCE
gpStencilFunc C.GPSTENCILFUNC
gpStencilOp C.GPSTENCILOP
gpTexImage2D C.GPTEXIMAGE2D gpTexImage2D C.GPTEXIMAGE2D
gpTexParameteri C.GPTEXPARAMETERI gpTexParameteri C.GPTEXPARAMETERI
gpTexSubImage2D C.GPTEXSUBIMAGE2D gpTexSubImage2D C.GPTEXSUBIMAGE2D
@ -484,6 +539,10 @@ func BindFramebufferEXT(target uint32, framebuffer uint32) {
C.glowBindFramebufferEXT(gpBindFramebufferEXT, (C.GLenum)(target), (C.GLuint)(framebuffer)) C.glowBindFramebufferEXT(gpBindFramebufferEXT, (C.GLenum)(target), (C.GLuint)(framebuffer))
} }
func BindRenderbufferEXT(target uint32, renderbuffer uint32) {
C.glowBindRenderbufferEXT(gpBindRenderbufferEXT, (C.GLenum)(target), (C.GLuint)(renderbuffer))
}
func BindTexture(target uint32, texture uint32) { func BindTexture(target uint32, texture uint32) {
C.glowBindTexture(gpBindTexture, (C.GLenum)(target), (C.GLuint)(texture)) C.glowBindTexture(gpBindTexture, (C.GLenum)(target), (C.GLuint)(texture))
} }
@ -505,6 +564,14 @@ func CheckFramebufferStatusEXT(target uint32) uint32 {
return (uint32)(ret) return (uint32)(ret)
} }
func Clear(mask uint32) {
C.glowClear(gpClear, (C.GLbitfield)(mask))
}
func ColorMask(red bool, green bool, blue bool, alpha bool) {
C.glowColorMask(gpColorMask, (C.GLboolean)(boolToInt(red)), (C.GLboolean)(boolToInt(green)), (C.GLboolean)(boolToInt(blue)), (C.GLboolean)(boolToInt(alpha)))
}
func CompileShader(shader uint32) { func CompileShader(shader uint32) {
C.glowCompileShader(gpCompileShader, (C.GLuint)(shader)) C.glowCompileShader(gpCompileShader, (C.GLuint)(shader))
} }
@ -531,6 +598,10 @@ func DeleteProgram(program uint32) {
C.glowDeleteProgram(gpDeleteProgram, (C.GLuint)(program)) C.glowDeleteProgram(gpDeleteProgram, (C.GLuint)(program))
} }
func DeleteRenderbuffersEXT(n int32, renderbuffers *uint32) {
C.glowDeleteRenderbuffersEXT(gpDeleteRenderbuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
}
func DeleteShader(shader uint32) { func DeleteShader(shader uint32) {
C.glowDeleteShader(gpDeleteShader, (C.GLuint)(shader)) C.glowDeleteShader(gpDeleteShader, (C.GLuint)(shader))
} }
@ -539,6 +610,10 @@ func DeleteTextures(n int32, textures *uint32) {
C.glowDeleteTextures(gpDeleteTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures))) C.glowDeleteTextures(gpDeleteTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
} }
func Disable(cap uint32) {
C.glowDisable(gpDisable, (C.GLenum)(cap))
}
func DisableVertexAttribArray(index uint32) { func DisableVertexAttribArray(index uint32) {
C.glowDisableVertexAttribArray(gpDisableVertexAttribArray, (C.GLuint)(index)) C.glowDisableVertexAttribArray(gpDisableVertexAttribArray, (C.GLuint)(index))
} }
@ -559,6 +634,10 @@ func Flush() {
C.glowFlush(gpFlush) C.glowFlush(gpFlush)
} }
func FramebufferRenderbufferEXT(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
C.glowFramebufferRenderbufferEXT(gpFramebufferRenderbufferEXT, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(renderbuffertarget), (C.GLuint)(renderbuffer))
}
func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) { func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
C.glowFramebufferTexture2DEXT(gpFramebufferTexture2DEXT, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level)) C.glowFramebufferTexture2DEXT(gpFramebufferTexture2DEXT, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
} }
@ -571,6 +650,10 @@ func GenFramebuffersEXT(n int32, framebuffers *uint32) {
C.glowGenFramebuffersEXT(gpGenFramebuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers))) C.glowGenFramebuffersEXT(gpGenFramebuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
} }
func GenRenderbuffersEXT(n int32, renderbuffers *uint32) {
C.glowGenRenderbuffersEXT(gpGenRenderbuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
}
func GenTextures(n int32, textures *uint32) { func GenTextures(n int32, textures *uint32) {
C.glowGenTextures(gpGenTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures))) C.glowGenTextures(gpGenTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
} }
@ -659,6 +742,11 @@ func IsProgram(program uint32) bool {
return ret == TRUE return ret == TRUE
} }
func IsRenderbufferEXT(renderbuffer uint32) bool {
ret := C.glowIsRenderbufferEXT(gpIsRenderbufferEXT, (C.GLuint)(renderbuffer))
return ret == TRUE
}
func IsTexture(texture uint32) bool { func IsTexture(texture uint32) bool {
ret := C.glowIsTexture(gpIsTexture, (C.GLuint)(texture)) ret := C.glowIsTexture(gpIsTexture, (C.GLuint)(texture))
return ret == TRUE return ret == TRUE
@ -676,6 +764,10 @@ func ReadPixels(x int32, y int32, width int32, height int32, format uint32, xtyp
C.glowReadPixels(gpReadPixels, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels) C.glowReadPixels(gpReadPixels, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
} }
func RenderbufferStorageEXT(target uint32, internalformat uint32, width int32, height int32) {
C.glowRenderbufferStorageEXT(gpRenderbufferStorageEXT, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
}
func Scissor(x int32, y int32, width int32, height int32) { func Scissor(x int32, y int32, width int32, height int32) {
C.glowScissor(gpScissor, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height)) C.glowScissor(gpScissor, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
} }
@ -684,6 +776,14 @@ func ShaderSource(shader uint32, count int32, xstring **uint8, length *int32) {
C.glowShaderSource(gpShaderSource, (C.GLuint)(shader), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(xstring)), (*C.GLint)(unsafe.Pointer(length))) C.glowShaderSource(gpShaderSource, (C.GLuint)(shader), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(xstring)), (*C.GLint)(unsafe.Pointer(length)))
} }
func StencilFunc(xfunc uint32, ref int32, mask uint32) {
C.glowStencilFunc(gpStencilFunc, (C.GLenum)(xfunc), (C.GLint)(ref), (C.GLuint)(mask))
}
func StencilOp(fail uint32, zfail uint32, zpass uint32) {
C.glowStencilOp(gpStencilOp, (C.GLenum)(fail), (C.GLenum)(zfail), (C.GLenum)(zpass))
}
func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) { func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
C.glowTexImage2D(gpTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels) C.glowTexImage2D(gpTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
} }
@ -766,6 +866,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
return errors.New("glBindBuffer") return errors.New("glBindBuffer")
} }
gpBindFramebufferEXT = (C.GPBINDFRAMEBUFFEREXT)(getProcAddr("glBindFramebufferEXT")) gpBindFramebufferEXT = (C.GPBINDFRAMEBUFFEREXT)(getProcAddr("glBindFramebufferEXT"))
gpBindRenderbufferEXT = (C.GPBINDRENDERBUFFEREXT)(getProcAddr("glBindRenderbufferEXT"))
gpBindTexture = (C.GPBINDTEXTURE)(getProcAddr("glBindTexture")) gpBindTexture = (C.GPBINDTEXTURE)(getProcAddr("glBindTexture"))
if gpBindTexture == nil { if gpBindTexture == nil {
return errors.New("glBindTexture") return errors.New("glBindTexture")
@ -783,6 +884,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
return errors.New("glBufferSubData") return errors.New("glBufferSubData")
} }
gpCheckFramebufferStatusEXT = (C.GPCHECKFRAMEBUFFERSTATUSEXT)(getProcAddr("glCheckFramebufferStatusEXT")) gpCheckFramebufferStatusEXT = (C.GPCHECKFRAMEBUFFERSTATUSEXT)(getProcAddr("glCheckFramebufferStatusEXT"))
gpClear = (C.GPCLEAR)(getProcAddr("glClear"))
if gpClear == nil {
return errors.New("glClear")
}
gpColorMask = (C.GPCOLORMASK)(getProcAddr("glColorMask"))
if gpColorMask == nil {
return errors.New("glColorMask")
}
gpCompileShader = (C.GPCOMPILESHADER)(getProcAddr("glCompileShader")) gpCompileShader = (C.GPCOMPILESHADER)(getProcAddr("glCompileShader"))
if gpCompileShader == nil { if gpCompileShader == nil {
return errors.New("glCompileShader") return errors.New("glCompileShader")
@ -804,6 +913,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpDeleteProgram == nil { if gpDeleteProgram == nil {
return errors.New("glDeleteProgram") return errors.New("glDeleteProgram")
} }
gpDeleteRenderbuffersEXT = (C.GPDELETERENDERBUFFERSEXT)(getProcAddr("glDeleteRenderbuffersEXT"))
gpDeleteShader = (C.GPDELETESHADER)(getProcAddr("glDeleteShader")) gpDeleteShader = (C.GPDELETESHADER)(getProcAddr("glDeleteShader"))
if gpDeleteShader == nil { if gpDeleteShader == nil {
return errors.New("glDeleteShader") return errors.New("glDeleteShader")
@ -812,6 +922,10 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpDeleteTextures == nil { if gpDeleteTextures == nil {
return errors.New("glDeleteTextures") return errors.New("glDeleteTextures")
} }
gpDisable = (C.GPDISABLE)(getProcAddr("glDisable"))
if gpDisable == nil {
return errors.New("glDisable")
}
gpDisableVertexAttribArray = (C.GPDISABLEVERTEXATTRIBARRAY)(getProcAddr("glDisableVertexAttribArray")) gpDisableVertexAttribArray = (C.GPDISABLEVERTEXATTRIBARRAY)(getProcAddr("glDisableVertexAttribArray"))
if gpDisableVertexAttribArray == nil { if gpDisableVertexAttribArray == nil {
return errors.New("glDisableVertexAttribArray") return errors.New("glDisableVertexAttribArray")
@ -832,12 +946,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpFlush == nil { if gpFlush == nil {
return errors.New("glFlush") return errors.New("glFlush")
} }
gpFramebufferRenderbufferEXT = (C.GPFRAMEBUFFERRENDERBUFFEREXT)(getProcAddr("glFramebufferRenderbufferEXT"))
gpFramebufferTexture2DEXT = (C.GPFRAMEBUFFERTEXTURE2DEXT)(getProcAddr("glFramebufferTexture2DEXT")) gpFramebufferTexture2DEXT = (C.GPFRAMEBUFFERTEXTURE2DEXT)(getProcAddr("glFramebufferTexture2DEXT"))
gpGenBuffers = (C.GPGENBUFFERS)(getProcAddr("glGenBuffers")) gpGenBuffers = (C.GPGENBUFFERS)(getProcAddr("glGenBuffers"))
if gpGenBuffers == nil { if gpGenBuffers == nil {
return errors.New("glGenBuffers") return errors.New("glGenBuffers")
} }
gpGenFramebuffersEXT = (C.GPGENFRAMEBUFFERSEXT)(getProcAddr("glGenFramebuffersEXT")) gpGenFramebuffersEXT = (C.GPGENFRAMEBUFFERSEXT)(getProcAddr("glGenFramebuffersEXT"))
gpGenRenderbuffersEXT = (C.GPGENRENDERBUFFERSEXT)(getProcAddr("glGenRenderbuffersEXT"))
gpGenTextures = (C.GPGENTEXTURES)(getProcAddr("glGenTextures")) gpGenTextures = (C.GPGENTEXTURES)(getProcAddr("glGenTextures"))
if gpGenTextures == nil { if gpGenTextures == nil {
return errors.New("glGenTextures") return errors.New("glGenTextures")
@ -891,6 +1007,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpIsProgram == nil { if gpIsProgram == nil {
return errors.New("glIsProgram") return errors.New("glIsProgram")
} }
gpIsRenderbufferEXT = (C.GPISRENDERBUFFEREXT)(getProcAddr("glIsRenderbufferEXT"))
gpIsTexture = (C.GPISTEXTURE)(getProcAddr("glIsTexture")) gpIsTexture = (C.GPISTEXTURE)(getProcAddr("glIsTexture"))
if gpIsTexture == nil { if gpIsTexture == nil {
return errors.New("glIsTexture") return errors.New("glIsTexture")
@ -907,6 +1024,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpReadPixels == nil { if gpReadPixels == nil {
return errors.New("glReadPixels") return errors.New("glReadPixels")
} }
gpRenderbufferStorageEXT = (C.GPRENDERBUFFERSTORAGEEXT)(getProcAddr("glRenderbufferStorageEXT"))
gpScissor = (C.GPSCISSOR)(getProcAddr("glScissor")) gpScissor = (C.GPSCISSOR)(getProcAddr("glScissor"))
if gpScissor == nil { if gpScissor == nil {
return errors.New("glScissor") return errors.New("glScissor")
@ -915,6 +1033,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
if gpShaderSource == nil { if gpShaderSource == nil {
return errors.New("glShaderSource") return errors.New("glShaderSource")
} }
gpStencilFunc = (C.GPSTENCILFUNC)(getProcAddr("glStencilFunc"))
if gpStencilFunc == nil {
return errors.New("glStencilFunc")
}
gpStencilOp = (C.GPSTENCILOP)(getProcAddr("glStencilOp"))
if gpStencilOp == nil {
return errors.New("glStencilOp")
}
gpTexImage2D = (C.GPTEXIMAGE2D)(getProcAddr("glTexImage2D")) gpTexImage2D = (C.GPTEXIMAGE2D)(getProcAddr("glTexImage2D"))
if gpTexImage2D == nil { if gpTexImage2D == nil {
return errors.New("glTexImage2D") return errors.New("glTexImage2D")

View File

@ -15,27 +15,34 @@ var (
gpBindAttribLocation uintptr gpBindAttribLocation uintptr
gpBindBuffer uintptr gpBindBuffer uintptr
gpBindFramebufferEXT uintptr gpBindFramebufferEXT uintptr
gpBindRenderbufferEXT uintptr
gpBindTexture uintptr gpBindTexture uintptr
gpBlendFunc uintptr gpBlendFunc uintptr
gpBufferData uintptr gpBufferData uintptr
gpBufferSubData uintptr gpBufferSubData uintptr
gpCheckFramebufferStatusEXT uintptr gpCheckFramebufferStatusEXT uintptr
gpClear uintptr
gpColorMask uintptr
gpCompileShader uintptr gpCompileShader uintptr
gpCreateProgram uintptr gpCreateProgram uintptr
gpCreateShader uintptr gpCreateShader uintptr
gpDeleteBuffers uintptr gpDeleteBuffers uintptr
gpDeleteFramebuffersEXT uintptr gpDeleteFramebuffersEXT uintptr
gpDeleteProgram uintptr gpDeleteProgram uintptr
gpDeleteRenderbuffersEXT uintptr
gpDeleteShader uintptr gpDeleteShader uintptr
gpDeleteTextures uintptr gpDeleteTextures uintptr
gpDisable uintptr
gpDisableVertexAttribArray uintptr gpDisableVertexAttribArray uintptr
gpDrawElements uintptr gpDrawElements uintptr
gpEnable uintptr gpEnable uintptr
gpEnableVertexAttribArray uintptr gpEnableVertexAttribArray uintptr
gpFlush uintptr gpFlush uintptr
gpFramebufferRenderbufferEXT uintptr
gpFramebufferTexture2DEXT uintptr gpFramebufferTexture2DEXT uintptr
gpGenBuffers uintptr gpGenBuffers uintptr
gpGenFramebuffersEXT uintptr gpGenFramebuffersEXT uintptr
gpGenRenderbuffersEXT uintptr
gpGenTextures uintptr gpGenTextures uintptr
gpGetBufferSubData uintptr gpGetBufferSubData uintptr
gpGetDoublei_v uintptr gpGetDoublei_v uintptr
@ -59,12 +66,16 @@ var (
gpGetVertexArrayPointeri_vEXT uintptr gpGetVertexArrayPointeri_vEXT uintptr
gpIsFramebufferEXT uintptr gpIsFramebufferEXT uintptr
gpIsProgram uintptr gpIsProgram uintptr
gpIsRenderbufferEXT uintptr
gpIsTexture uintptr gpIsTexture uintptr
gpLinkProgram uintptr gpLinkProgram uintptr
gpPixelStorei uintptr gpPixelStorei uintptr
gpReadPixels uintptr gpReadPixels uintptr
gpRenderbufferStorageEXT uintptr
gpScissor uintptr gpScissor uintptr
gpShaderSource uintptr gpShaderSource uintptr
gpStencilFunc uintptr
gpStencilOp uintptr
gpTexImage2D uintptr gpTexImage2D uintptr
gpTexParameteri uintptr gpTexParameteri uintptr
gpTexSubImage2D uintptr gpTexSubImage2D uintptr
@ -109,6 +120,10 @@ func BindFramebufferEXT(target uint32, framebuffer uint32) {
syscall.Syscall(gpBindFramebufferEXT, 2, uintptr(target), uintptr(framebuffer), 0) syscall.Syscall(gpBindFramebufferEXT, 2, uintptr(target), uintptr(framebuffer), 0)
} }
func BindRenderbufferEXT(target uint32, renderbuffer uint32) {
syscall.Syscall(gpBindRenderbufferEXT, 2, uintptr(target), uintptr(renderbuffer), 0)
}
func BindTexture(target uint32, texture uint32) { func BindTexture(target uint32, texture uint32) {
syscall.Syscall(gpBindTexture, 2, uintptr(target), uintptr(texture), 0) syscall.Syscall(gpBindTexture, 2, uintptr(target), uintptr(texture), 0)
} }
@ -130,6 +145,14 @@ func CheckFramebufferStatusEXT(target uint32) uint32 {
return (uint32)(ret) return (uint32)(ret)
} }
func Clear(mask uint32) {
syscall.Syscall(gpClear, 1, uintptr(mask), 0, 0)
}
func ColorMask(red bool, green bool, blue bool, alpha bool) {
syscall.Syscall6(gpColorMask, 4, boolToUintptr(red), boolToUintptr(green), boolToUintptr(blue), boolToUintptr(alpha), 0, 0)
}
func CompileShader(shader uint32) { func CompileShader(shader uint32) {
syscall.Syscall(gpCompileShader, 1, uintptr(shader), 0, 0) syscall.Syscall(gpCompileShader, 1, uintptr(shader), 0, 0)
} }
@ -156,6 +179,10 @@ func DeleteProgram(program uint32) {
syscall.Syscall(gpDeleteProgram, 1, uintptr(program), 0, 0) syscall.Syscall(gpDeleteProgram, 1, uintptr(program), 0, 0)
} }
func DeleteRenderbuffersEXT(n int32, renderbuffers *uint32) {
syscall.Syscall(gpDeleteRenderbuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(renderbuffers)), 0)
}
func DeleteShader(shader uint32) { func DeleteShader(shader uint32) {
syscall.Syscall(gpDeleteShader, 1, uintptr(shader), 0, 0) syscall.Syscall(gpDeleteShader, 1, uintptr(shader), 0, 0)
} }
@ -164,6 +191,10 @@ func DeleteTextures(n int32, textures *uint32) {
syscall.Syscall(gpDeleteTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0) syscall.Syscall(gpDeleteTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0)
} }
func Disable(cap uint32) {
syscall.Syscall(gpDisable, 1, uintptr(cap), 0, 0)
}
func DisableVertexAttribArray(index uint32) { func DisableVertexAttribArray(index uint32) {
syscall.Syscall(gpDisableVertexAttribArray, 1, uintptr(index), 0, 0) syscall.Syscall(gpDisableVertexAttribArray, 1, uintptr(index), 0, 0)
} }
@ -184,6 +215,10 @@ func Flush() {
syscall.Syscall(gpFlush, 0, 0, 0, 0) syscall.Syscall(gpFlush, 0, 0, 0, 0)
} }
func FramebufferRenderbufferEXT(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
syscall.Syscall6(gpFramebufferRenderbufferEXT, 4, uintptr(target), uintptr(attachment), uintptr(renderbuffertarget), uintptr(renderbuffer), 0, 0)
}
func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) { func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
syscall.Syscall6(gpFramebufferTexture2DEXT, 5, uintptr(target), uintptr(attachment), uintptr(textarget), uintptr(texture), uintptr(level), 0) syscall.Syscall6(gpFramebufferTexture2DEXT, 5, uintptr(target), uintptr(attachment), uintptr(textarget), uintptr(texture), uintptr(level), 0)
} }
@ -196,6 +231,10 @@ func GenFramebuffersEXT(n int32, framebuffers *uint32) {
syscall.Syscall(gpGenFramebuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(framebuffers)), 0) syscall.Syscall(gpGenFramebuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(framebuffers)), 0)
} }
func GenRenderbuffersEXT(n int32, renderbuffers *uint32) {
syscall.Syscall(gpGenRenderbuffersEXT, 2, uintptr(n), uintptr(unsafe.Pointer(renderbuffers)), 0)
}
func GenTextures(n int32, textures *uint32) { func GenTextures(n int32, textures *uint32) {
syscall.Syscall(gpGenTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0) syscall.Syscall(gpGenTextures, 2, uintptr(n), uintptr(unsafe.Pointer(textures)), 0)
} }
@ -284,6 +323,11 @@ func IsProgram(program uint32) bool {
return ret != 0 return ret != 0
} }
func IsRenderbufferEXT(renderbuffer uint32) bool {
ret, _, _ := syscall.Syscall(gpIsRenderbufferEXT, 1, uintptr(renderbuffer), 0, 0)
return ret != 0
}
func IsTexture(texture uint32) bool { func IsTexture(texture uint32) bool {
ret, _, _ := syscall.Syscall(gpIsTexture, 1, uintptr(texture), 0, 0) ret, _, _ := syscall.Syscall(gpIsTexture, 1, uintptr(texture), 0, 0)
return ret != 0 return ret != 0
@ -301,6 +345,10 @@ func ReadPixels(x int32, y int32, width int32, height int32, format uint32, xtyp
syscall.Syscall9(gpReadPixels, 7, uintptr(x), uintptr(y), uintptr(width), uintptr(height), uintptr(format), uintptr(xtype), uintptr(pixels), 0, 0) syscall.Syscall9(gpReadPixels, 7, uintptr(x), uintptr(y), uintptr(width), uintptr(height), uintptr(format), uintptr(xtype), uintptr(pixels), 0, 0)
} }
func RenderbufferStorageEXT(target uint32, internalformat uint32, width int32, height int32) {
syscall.Syscall6(gpRenderbufferStorageEXT, 4, uintptr(target), uintptr(internalformat), uintptr(width), uintptr(height), 0, 0)
}
func Scissor(x int32, y int32, width int32, height int32) { func Scissor(x int32, y int32, width int32, height int32) {
syscall.Syscall6(gpScissor, 4, uintptr(x), uintptr(y), uintptr(width), uintptr(height), 0, 0) syscall.Syscall6(gpScissor, 4, uintptr(x), uintptr(y), uintptr(width), uintptr(height), 0, 0)
} }
@ -309,6 +357,14 @@ func ShaderSource(shader uint32, count int32, xstring **uint8, length *int32) {
syscall.Syscall6(gpShaderSource, 4, uintptr(shader), uintptr(count), uintptr(unsafe.Pointer(xstring)), uintptr(unsafe.Pointer(length)), 0, 0) syscall.Syscall6(gpShaderSource, 4, uintptr(shader), uintptr(count), uintptr(unsafe.Pointer(xstring)), uintptr(unsafe.Pointer(length)), 0, 0)
} }
func StencilFunc(xfunc uint32, ref int32, mask uint32) {
syscall.Syscall(gpStencilFunc, 3, uintptr(xfunc), uintptr(ref), uintptr(mask))
}
func StencilOp(fail uint32, zfail uint32, zpass uint32) {
syscall.Syscall(gpStencilOp, 3, uintptr(fail), uintptr(zfail), uintptr(zpass))
}
func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) { func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
syscall.Syscall9(gpTexImage2D, 9, uintptr(target), uintptr(level), uintptr(internalformat), uintptr(width), uintptr(height), uintptr(border), uintptr(format), uintptr(xtype), uintptr(pixels)) syscall.Syscall9(gpTexImage2D, 9, uintptr(target), uintptr(level), uintptr(internalformat), uintptr(width), uintptr(height), uintptr(border), uintptr(format), uintptr(xtype), uintptr(pixels))
} }
@ -391,6 +447,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
return errors.New("glBindBuffer") return errors.New("glBindBuffer")
} }
gpBindFramebufferEXT = getProcAddr("glBindFramebufferEXT") gpBindFramebufferEXT = getProcAddr("glBindFramebufferEXT")
gpBindRenderbufferEXT = getProcAddr("glBindRenderbufferEXT")
gpBindTexture = getProcAddr("glBindTexture") gpBindTexture = getProcAddr("glBindTexture")
if gpBindTexture == 0 { if gpBindTexture == 0 {
return errors.New("glBindTexture") return errors.New("glBindTexture")
@ -408,6 +465,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
return errors.New("glBufferSubData") return errors.New("glBufferSubData")
} }
gpCheckFramebufferStatusEXT = getProcAddr("glCheckFramebufferStatusEXT") gpCheckFramebufferStatusEXT = getProcAddr("glCheckFramebufferStatusEXT")
gpClear = getProcAddr("glClear")
if gpClear == 0 {
return errors.New("glClear")
}
gpColorMask = getProcAddr("glColorMask")
if gpColorMask == 0 {
return errors.New("glColorMask")
}
gpCompileShader = getProcAddr("glCompileShader") gpCompileShader = getProcAddr("glCompileShader")
if gpCompileShader == 0 { if gpCompileShader == 0 {
return errors.New("glCompileShader") return errors.New("glCompileShader")
@ -429,6 +494,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpDeleteProgram == 0 { if gpDeleteProgram == 0 {
return errors.New("glDeleteProgram") return errors.New("glDeleteProgram")
} }
gpDeleteRenderbuffersEXT = getProcAddr("glDeleteRenderbuffersEXT")
gpDeleteShader = getProcAddr("glDeleteShader") gpDeleteShader = getProcAddr("glDeleteShader")
if gpDeleteShader == 0 { if gpDeleteShader == 0 {
return errors.New("glDeleteShader") return errors.New("glDeleteShader")
@ -437,6 +503,10 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpDeleteTextures == 0 { if gpDeleteTextures == 0 {
return errors.New("glDeleteTextures") return errors.New("glDeleteTextures")
} }
gpDisable = getProcAddr("glDisable")
if gpDisable == 0 {
return errors.New("glDisable")
}
gpDisableVertexAttribArray = getProcAddr("glDisableVertexAttribArray") gpDisableVertexAttribArray = getProcAddr("glDisableVertexAttribArray")
if gpDisableVertexAttribArray == 0 { if gpDisableVertexAttribArray == 0 {
return errors.New("glDisableVertexAttribArray") return errors.New("glDisableVertexAttribArray")
@ -457,12 +527,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpFlush == 0 { if gpFlush == 0 {
return errors.New("glFlush") return errors.New("glFlush")
} }
gpFramebufferRenderbufferEXT = getProcAddr("glFramebufferRenderbufferEXT")
gpFramebufferTexture2DEXT = getProcAddr("glFramebufferTexture2DEXT") gpFramebufferTexture2DEXT = getProcAddr("glFramebufferTexture2DEXT")
gpGenBuffers = getProcAddr("glGenBuffers") gpGenBuffers = getProcAddr("glGenBuffers")
if gpGenBuffers == 0 { if gpGenBuffers == 0 {
return errors.New("glGenBuffers") return errors.New("glGenBuffers")
} }
gpGenFramebuffersEXT = getProcAddr("glGenFramebuffersEXT") gpGenFramebuffersEXT = getProcAddr("glGenFramebuffersEXT")
gpGenRenderbuffersEXT = getProcAddr("glGenRenderbuffersEXT")
gpGenTextures = getProcAddr("glGenTextures") gpGenTextures = getProcAddr("glGenTextures")
if gpGenTextures == 0 { if gpGenTextures == 0 {
return errors.New("glGenTextures") return errors.New("glGenTextures")
@ -516,6 +588,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpIsProgram == 0 { if gpIsProgram == 0 {
return errors.New("glIsProgram") return errors.New("glIsProgram")
} }
gpIsRenderbufferEXT = getProcAddr("glIsRenderbufferEXT")
gpIsTexture = getProcAddr("glIsTexture") gpIsTexture = getProcAddr("glIsTexture")
if gpIsTexture == 0 { if gpIsTexture == 0 {
return errors.New("glIsTexture") return errors.New("glIsTexture")
@ -532,6 +605,7 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpReadPixels == 0 { if gpReadPixels == 0 {
return errors.New("glReadPixels") return errors.New("glReadPixels")
} }
gpRenderbufferStorageEXT = getProcAddr("glRenderbufferStorageEXT")
gpScissor = getProcAddr("glScissor") gpScissor = getProcAddr("glScissor")
if gpScissor == 0 { if gpScissor == 0 {
return errors.New("glScissor") return errors.New("glScissor")
@ -540,6 +614,14 @@ func InitWithProcAddrFunc(getProcAddr func(name string) uintptr) error {
if gpShaderSource == 0 { if gpShaderSource == 0 {
return errors.New("glShaderSource") return errors.New("glShaderSource")
} }
gpStencilFunc = getProcAddr("glStencilFunc")
if gpStencilFunc == 0 {
return errors.New("glStencilFunc")
}
gpStencilOp = getProcAddr("glStencilOp")
if gpStencilOp == 0 {
return errors.New("glStencilOp")
}
gpTexImage2D = getProcAddr("glTexImage2D") gpTexImage2D = getProcAddr("glTexImage2D")
if gpTexImage2D == 0 { if gpTexImage2D == 0 {
return errors.New("glTexImage2D") return errors.New("glTexImage2D")

View File

@ -24,26 +24,33 @@ type gl struct {
bindAttribLocation js.Value bindAttribLocation js.Value
bindBuffer js.Value bindBuffer js.Value
bindFramebuffer js.Value bindFramebuffer js.Value
bindRenderbuffer js.Value
bindTexture js.Value bindTexture js.Value
blendFunc js.Value blendFunc js.Value
bufferData js.Value bufferData js.Value
bufferSubData js.Value bufferSubData js.Value
checkFramebufferStatus js.Value checkFramebufferStatus js.Value
clear js.Value
colorMask js.Value
compileShader js.Value compileShader js.Value
createBuffer js.Value createBuffer js.Value
createFramebuffer js.Value createFramebuffer js.Value
createProgram js.Value createProgram js.Value
createRenderbuffer js.Value
createShader js.Value createShader js.Value
createTexture js.Value createTexture js.Value
deleteBuffer js.Value deleteBuffer js.Value
deleteFramebuffer js.Value deleteFramebuffer js.Value
deleteProgram js.Value deleteProgram js.Value
deleteRenderbuffer js.Value
deleteShader js.Value deleteShader js.Value
deleteTexture js.Value deleteTexture js.Value
disable js.Value
disableVertexAttribArray js.Value disableVertexAttribArray js.Value
drawElements js.Value drawElements js.Value
enable js.Value enable js.Value
enableVertexAttribArray js.Value enableVertexAttribArray js.Value
framebufferRenderbuffer js.Value
framebufferTexture2D js.Value framebufferTexture2D js.Value
flush js.Value flush js.Value
getBufferSubData js.Value getBufferSubData js.Value
@ -58,12 +65,17 @@ type gl struct {
isContextLost js.Value isContextLost js.Value
isFramebuffer js.Value isFramebuffer js.Value
isProgram js.Value isProgram js.Value
isRenderbuffer js.Value
isTexture js.Value isTexture js.Value
linkProgram js.Value linkProgram js.Value
pixelStorei js.Value pixelStorei js.Value
readPixels js.Value readPixels js.Value
renderbufferStorage js.Value
scissor js.Value scissor js.Value
shaderSource js.Value shaderSource js.Value
stencilFunc js.Value
stencilMask js.Value
stencilOp js.Value
texImage2D js.Value texImage2D js.Value
texSubImage2D js.Value texSubImage2D js.Value
texParameteri js.Value texParameteri js.Value
@ -90,26 +102,33 @@ func newGL(v js.Value) *gl {
bindAttribLocation: v.Get("bindAttribLocation").Call("bind", v), bindAttribLocation: v.Get("bindAttribLocation").Call("bind", v),
bindBuffer: v.Get("bindBuffer").Call("bind", v), bindBuffer: v.Get("bindBuffer").Call("bind", v),
bindFramebuffer: v.Get("bindFramebuffer").Call("bind", v), bindFramebuffer: v.Get("bindFramebuffer").Call("bind", v),
bindRenderbuffer: v.Get("bindRenderbuffer").Call("bind", v),
bindTexture: v.Get("bindTexture").Call("bind", v), bindTexture: v.Get("bindTexture").Call("bind", v),
blendFunc: v.Get("blendFunc").Call("bind", v), blendFunc: v.Get("blendFunc").Call("bind", v),
bufferData: v.Get("bufferData").Call("bind", v), bufferData: v.Get("bufferData").Call("bind", v),
bufferSubData: v.Get("bufferSubData").Call("bind", v), bufferSubData: v.Get("bufferSubData").Call("bind", v),
checkFramebufferStatus: v.Get("checkFramebufferStatus").Call("bind", v), checkFramebufferStatus: v.Get("checkFramebufferStatus").Call("bind", v),
clear: v.Get("clear").Call("bind", v),
colorMask: v.Get("colorMask").Call("bind", v),
compileShader: v.Get("compileShader").Call("bind", v), compileShader: v.Get("compileShader").Call("bind", v),
createBuffer: v.Get("createBuffer").Call("bind", v), createBuffer: v.Get("createBuffer").Call("bind", v),
createFramebuffer: v.Get("createFramebuffer").Call("bind", v), createFramebuffer: v.Get("createFramebuffer").Call("bind", v),
createProgram: v.Get("createProgram").Call("bind", v), createProgram: v.Get("createProgram").Call("bind", v),
createRenderbuffer: v.Get("createRenderbuffer").Call("bind", v),
createShader: v.Get("createShader").Call("bind", v), createShader: v.Get("createShader").Call("bind", v),
createTexture: v.Get("createTexture").Call("bind", v), createTexture: v.Get("createTexture").Call("bind", v),
deleteBuffer: v.Get("deleteBuffer").Call("bind", v), deleteBuffer: v.Get("deleteBuffer").Call("bind", v),
deleteFramebuffer: v.Get("deleteFramebuffer").Call("bind", v), deleteFramebuffer: v.Get("deleteFramebuffer").Call("bind", v),
deleteProgram: v.Get("deleteProgram").Call("bind", v), deleteProgram: v.Get("deleteProgram").Call("bind", v),
deleteRenderbuffer: v.Get("deleteRenderbuffer").Call("bind", v),
deleteShader: v.Get("deleteShader").Call("bind", v), deleteShader: v.Get("deleteShader").Call("bind", v),
deleteTexture: v.Get("deleteTexture").Call("bind", v), deleteTexture: v.Get("deleteTexture").Call("bind", v),
disable: v.Get("disable").Call("bind", v),
disableVertexAttribArray: v.Get("disableVertexAttribArray").Call("bind", v), disableVertexAttribArray: v.Get("disableVertexAttribArray").Call("bind", v),
drawElements: v.Get("drawElements").Call("bind", v), drawElements: v.Get("drawElements").Call("bind", v),
enable: v.Get("enable").Call("bind", v), enable: v.Get("enable").Call("bind", v),
enableVertexAttribArray: v.Get("enableVertexAttribArray").Call("bind", v), enableVertexAttribArray: v.Get("enableVertexAttribArray").Call("bind", v),
framebufferRenderbuffer: v.Get("framebufferRenderbuffer").Call("bind", v),
framebufferTexture2D: v.Get("framebufferTexture2D").Call("bind", v), framebufferTexture2D: v.Get("framebufferTexture2D").Call("bind", v),
flush: v.Get("flush").Call("bind", v), flush: v.Get("flush").Call("bind", v),
getParameter: v.Get("getParameter").Call("bind", v), getParameter: v.Get("getParameter").Call("bind", v),
@ -122,12 +141,17 @@ func newGL(v js.Value) *gl {
isContextLost: v.Get("isContextLost").Call("bind", v), isContextLost: v.Get("isContextLost").Call("bind", v),
isFramebuffer: v.Get("isFramebuffer").Call("bind", v), isFramebuffer: v.Get("isFramebuffer").Call("bind", v),
isProgram: v.Get("isProgram").Call("bind", v), isProgram: v.Get("isProgram").Call("bind", v),
isRenderbuffer: v.Get("isRenderbuffer").Call("bind", v),
isTexture: v.Get("isTexture").Call("bind", v), isTexture: v.Get("isTexture").Call("bind", v),
linkProgram: v.Get("linkProgram").Call("bind", v), linkProgram: v.Get("linkProgram").Call("bind", v),
pixelStorei: v.Get("pixelStorei").Call("bind", v), pixelStorei: v.Get("pixelStorei").Call("bind", v),
readPixels: v.Get("readPixels").Call("bind", v), readPixels: v.Get("readPixels").Call("bind", v),
renderbufferStorage: v.Get("renderbufferStorage").Call("bind", v),
scissor: v.Get("scissor").Call("bind", v), scissor: v.Get("scissor").Call("bind", v),
shaderSource: v.Get("shaderSource").Call("bind", v), shaderSource: v.Get("shaderSource").Call("bind", v),
stencilFunc: v.Get("stencilFunc").Call("bind", v),
stencilMask: v.Get("stencilMask").Call("bind", v),
stencilOp: v.Get("stencilOp").Call("bind", v),
texImage2D: v.Get("texImage2D").Call("bind", v), texImage2D: v.Get("texImage2D").Call("bind", v),
texSubImage2D: v.Get("texSubImage2D").Call("bind", v), texSubImage2D: v.Get("texSubImage2D").Call("bind", v),
texParameteri: v.Get("texParameteri").Call("bind", v), texParameteri: v.Get("texParameteri").Call("bind", v),

View File

@ -24,6 +24,7 @@ const (
ONE_MINUS_DST_ALPHA = 0x0305 ONE_MINUS_DST_ALPHA = 0x0305
DST_COLOR = 0x0306 DST_COLOR = 0x0306
ALWAYS = 0x0207
ARRAY_BUFFER = 0x8892 ARRAY_BUFFER = 0x8892
BLEND = 0x0BE2 BLEND = 0x0BE2
CLAMP_TO_EDGE = 0x812F CLAMP_TO_EDGE = 0x812F
@ -39,16 +40,24 @@ const (
FRAMEBUFFER_COMPLETE = 0x8CD5 FRAMEBUFFER_COMPLETE = 0x8CD5
HIGH_FLOAT = 0x8DF2 HIGH_FLOAT = 0x8DF2
INFO_LOG_LENGTH = 0x8B84 INFO_LOG_LENGTH = 0x8B84
INVERT = 0x150A
KEEP = 0x1E00
LINK_STATUS = 0x8B82 LINK_STATUS = 0x8B82
MAX_TEXTURE_SIZE = 0x0D33 MAX_TEXTURE_SIZE = 0x0D33
NEAREST = 0x2600 NEAREST = 0x2600
NO_ERROR = 0 NO_ERROR = 0
NOTEQUAL = 0x0205
PIXEL_PACK_BUFFER = 0x88EB PIXEL_PACK_BUFFER = 0x88EB
PIXEL_UNPACK_BUFFER = 0x88EC PIXEL_UNPACK_BUFFER = 0x88EC
READ_WRITE = 0x88BA READ_WRITE = 0x88BA
RENDERBUFFER = 0x8D41
RGBA = 0x1908 RGBA = 0x1908
SCISSOR_TEST = 0x0C11 SCISSOR_TEST = 0x0C11
SHORT = 0x1402 SHORT = 0x1402
STENCIL_ATTACHMENT = 0x8D20
STENCIL_BUFFER_BIT = 0x0400
STENCIL_INDEX8 = 0x8D48
STENCIL_TEST = 0x0B90
STREAM_DRAW = 0x88E0 STREAM_DRAW = 0x88E0
TEXTURE0 = 0x84C0 TEXTURE0 = 0x84C0
TEXTURE_2D = 0x0DE1 TEXTURE_2D = 0x0DE1

View File

@ -66,6 +66,10 @@ func (DefaultContext) BindFramebuffer(target uint32, framebuffer uint32) {
C.glBindFramebuffer(C.GLenum(target), C.GLuint(framebuffer)) C.glBindFramebuffer(C.GLenum(target), C.GLuint(framebuffer))
} }
func (DefaultContext) BindRenderbuffer(target uint32, renderbuffer uint32) {
C.glBindRenderbuffer(C.GLenum(target), C.GLuint(renderbuffer))
}
func (DefaultContext) BindTexture(target uint32, texture uint32) { func (DefaultContext) BindTexture(target uint32, texture uint32) {
C.glBindTexture(C.GLenum(target), C.GLuint(texture)) C.glBindTexture(C.GLenum(target), C.GLuint(texture))
} }
@ -90,6 +94,14 @@ func (DefaultContext) CheckFramebufferStatus(target uint32) uint32 {
return uint32(C.glCheckFramebufferStatus(C.GLenum(target))) return uint32(C.glCheckFramebufferStatus(C.GLenum(target)))
} }
func (DefaultContext) Clear(mask uint32) {
C.glClear(C.GLbitfield(mask))
}
func (DefaultContext) ColorMask(red, green, blue, alpha bool) {
C.glColorMask(glBool(red), glBool(green), glBool(blue), glBool(alpha))
}
func (DefaultContext) CompileShader(shader uint32) { func (DefaultContext) CompileShader(shader uint32) {
C.glCompileShader(C.GLuint(shader)) C.glCompileShader(C.GLuint(shader))
} }
@ -114,6 +126,10 @@ func (DefaultContext) DeleteProgram(program uint32) {
C.glDeleteProgram(C.GLuint(program)) C.glDeleteProgram(C.GLuint(program))
} }
func (DefaultContext) DeleteRenderbuffers(renderbuffers []uint32) {
C.glDeleteRenderbuffers(C.GLsizei(len(renderbuffers)), (*C.GLuint)(unsafe.Pointer(&renderbuffers[0])))
}
func (DefaultContext) DeleteShader(shader uint32) { func (DefaultContext) DeleteShader(shader uint32) {
C.glDeleteShader(C.GLuint(shader)) C.glDeleteShader(C.GLuint(shader))
} }
@ -122,6 +138,10 @@ func (DefaultContext) DeleteTextures(textures []uint32) {
C.glDeleteTextures(C.GLsizei(len(textures)), (*C.GLuint)(unsafe.Pointer(&textures[0]))) C.glDeleteTextures(C.GLsizei(len(textures)), (*C.GLuint)(unsafe.Pointer(&textures[0])))
} }
func (DefaultContext) Disable(cap uint32) {
C.glDisable(C.GLenum(cap))
}
func (DefaultContext) DisableVertexAttribArray(index uint32) { func (DefaultContext) DisableVertexAttribArray(index uint32) {
C.glDisableVertexAttribArray(C.GLuint(index)) C.glDisableVertexAttribArray(C.GLuint(index))
} }
@ -142,6 +162,10 @@ func (DefaultContext) Flush() {
C.glFlush() C.glFlush()
} }
func (DefaultContext) FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
C.glFramebufferRenderbuffer(C.GLenum(target), C.GLenum(attachment), C.GLenum(renderbuffertarget), C.GLuint(renderbuffer))
}
func (DefaultContext) FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) { func (DefaultContext) FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
C.glFramebufferTexture2D(C.GLenum(target), C.GLenum(attachment), C.GLenum(textarget), C.GLuint(texture), C.GLint(level)) C.glFramebufferTexture2D(C.GLenum(target), C.GLenum(attachment), C.GLenum(textarget), C.GLuint(texture), C.GLint(level))
} }
@ -158,6 +182,12 @@ func (DefaultContext) GenFramebuffers(n int32) []uint32 {
return framebuffers return framebuffers
} }
func (DefaultContext) GenRenderbuffers(n int32) []uint32 {
renderbuffers := make([]uint32, n)
C.glGenRenderbuffers(C.GLsizei(n), (*C.GLuint)(unsafe.Pointer(&renderbuffers[0])))
return renderbuffers
}
func (DefaultContext) GenTextures(n int32) []uint32 { func (DefaultContext) GenTextures(n int32) []uint32 {
textures := make([]uint32, n) textures := make([]uint32, n)
C.glGenTextures(C.GLsizei(n), (*C.GLuint)(unsafe.Pointer(&textures[0]))) C.glGenTextures(C.GLsizei(n), (*C.GLuint)(unsafe.Pointer(&textures[0])))
@ -227,6 +257,10 @@ func (DefaultContext) IsProgram(program uint32) bool {
return C.glIsProgram(C.GLuint(program)) != FALSE return C.glIsProgram(C.GLuint(program)) != FALSE
} }
func (DefaultContext) IsRenderbuffer(renderbuffer uint32) bool {
return C.glIsRenderbuffer(C.GLuint(renderbuffer)) != FALSE
}
func (DefaultContext) IsTexture(texture uint32) bool { func (DefaultContext) IsTexture(texture uint32) bool {
return C.glIsTexture(C.GLuint(texture)) != FALSE return C.glIsTexture(C.GLuint(texture)) != FALSE
} }
@ -243,6 +277,10 @@ func (DefaultContext) ReadPixels(dst []byte, x int32, y int32, width int32, heig
C.glReadPixels(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), C.GLenum(format), C.GLenum(xtype), unsafe.Pointer(&dst[0])) C.glReadPixels(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height), C.GLenum(format), C.GLenum(xtype), unsafe.Pointer(&dst[0]))
} }
func (DefaultContext) RenderbufferStorage(target uint32, internalFormat uint32, width int32, height int32) {
C.glRenderbufferStorage(C.GLenum(target), C.GLenum(internalFormat), C.GLsizei(width), C.GLsizei(height))
}
func (DefaultContext) Scissor(x, y, width, height int32) { func (DefaultContext) Scissor(x, y, width, height int32) {
C.glScissor(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height)) C.glScissor(C.GLint(x), C.GLint(y), C.GLsizei(width), C.GLsizei(height))
} }
@ -253,6 +291,14 @@ func (DefaultContext) ShaderSource(shader uint32, xstring string) {
C.glShaderSource(C.GLuint(shader), 1, (**C.GLchar)(unsafe.Pointer(s)), nil) C.glShaderSource(C.GLuint(shader), 1, (**C.GLchar)(unsafe.Pointer(s)), nil)
} }
func (DefaultContext) StencilFunc(func_ uint32, ref int32, mask uint32) {
C.glStencilFunc(C.GLenum(func_), C.GLint(ref), C.GLuint(mask))
}
func (DefaultContext) StencilOp(sfail, dpfail, dppass uint32) {
C.glStencilOp(C.GLenum(sfail), C.GLenum(dpfail), C.GLenum(dppass))
}
func (DefaultContext) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte) { func (DefaultContext) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte) {
var p *byte var p *byte
if pixels != nil { if pixels != nil {

View File

@ -56,6 +56,10 @@ func (g *GomobileContext) BindFramebuffer(target uint32, framebuffer uint32) {
g.ctx.BindFramebuffer(gl.Enum(target), gl.Framebuffer{Value: framebuffer}) g.ctx.BindFramebuffer(gl.Enum(target), gl.Framebuffer{Value: framebuffer})
} }
func (g *GomobileContext) BindRenderbuffer(target uint32, renderbuffer uint32) {
g.ctx.BindRenderbuffer(gl.Enum(target), gl.Renderbuffer{Value: renderbuffer})
}
func (g *GomobileContext) BindTexture(target uint32, texture uint32) { func (g *GomobileContext) BindTexture(target uint32, texture uint32) {
g.ctx.BindTexture(gl.Enum(target), gl.Texture{Value: texture}) g.ctx.BindTexture(gl.Enum(target), gl.Texture{Value: texture})
} }
@ -83,6 +87,14 @@ func (g *GomobileContext) CheckFramebufferStatus(target uint32) uint32 {
return uint32(g.ctx.CheckFramebufferStatus(gl.Enum(target))) return uint32(g.ctx.CheckFramebufferStatus(gl.Enum(target)))
} }
func (g *GomobileContext) Clear(mask uint32) {
g.ctx.Clear(gl.Enum(mask))
}
func (g *GomobileContext) ColorMask(red, green, blue, alpha bool) {
g.ctx.ColorMask(red, green, blue, alpha)
}
func (g *GomobileContext) CompileShader(shader uint32) { func (g *GomobileContext) CompileShader(shader uint32) {
g.ctx.CompileShader(gl.Shader{Value: shader}) g.ctx.CompileShader(gl.Shader{Value: shader})
} }
@ -111,6 +123,12 @@ func (g *GomobileContext) DeleteProgram(program uint32) {
g.ctx.DeleteProgram(gmProgram(program)) g.ctx.DeleteProgram(gmProgram(program))
} }
func (g *GomobileContext) DeleteRenderbuffers(renderbuffers []uint32) {
for _, r := range renderbuffers {
g.ctx.DeleteRenderbuffer(gl.Renderbuffer{Value: r})
}
}
func (g *GomobileContext) DeleteShader(shader uint32) { func (g *GomobileContext) DeleteShader(shader uint32) {
g.ctx.DeleteShader(gl.Shader{Value: shader}) g.ctx.DeleteShader(gl.Shader{Value: shader})
} }
@ -121,6 +139,10 @@ func (g *GomobileContext) DeleteTextures(textures []uint32) {
} }
} }
func (g *GomobileContext) Disable(cap uint32) {
g.ctx.Disable(gl.Enum(cap))
}
func (g *GomobileContext) DisableVertexAttribArray(index uint32) { func (g *GomobileContext) DisableVertexAttribArray(index uint32) {
g.ctx.DisableVertexAttribArray(gl.Attrib{Value: uint(index)}) g.ctx.DisableVertexAttribArray(gl.Attrib{Value: uint(index)})
} }
@ -141,6 +163,10 @@ func (g *GomobileContext) Flush() {
g.ctx.Flush() g.ctx.Flush()
} }
func (g *GomobileContext) FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
g.ctx.FramebufferRenderbuffer(gl.Enum(target), gl.Enum(attachment), gl.Enum(renderbuffertarget), gl.Renderbuffer{Value: renderbuffer})
}
func (g *GomobileContext) FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) { func (g *GomobileContext) FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
g.ctx.FramebufferTexture2D(gl.Enum(target), gl.Enum(attachment), gl.Enum(textarget), gl.Texture{Value: texture}, int(level)) g.ctx.FramebufferTexture2D(gl.Enum(target), gl.Enum(attachment), gl.Enum(textarget), gl.Texture{Value: texture}, int(level))
} }
@ -161,6 +187,14 @@ func (g *GomobileContext) GenFramebuffers(n int32) []uint32 {
return framebuffers return framebuffers
} }
func (g *GomobileContext) GenRenderbuffers(n int32) []uint32 {
renderbuffers := make([]uint32, n)
for i := range renderbuffers {
renderbuffers[i] = g.ctx.CreateRenderbuffer().Value
}
return renderbuffers
}
func (g *GomobileContext) GenTextures(n int32) []uint32 { func (g *GomobileContext) GenTextures(n int32) []uint32 {
textures := make([]uint32, n) textures := make([]uint32, n)
for i := range textures { for i := range textures {
@ -209,6 +243,10 @@ func (g *GomobileContext) IsProgram(program uint32) bool {
return g.ctx.IsProgram(gmProgram(program)) return g.ctx.IsProgram(gmProgram(program))
} }
func (g *GomobileContext) IsRenderbuffer(renderbuffer uint32) bool {
return g.ctx.IsRenderbuffer(gl.Renderbuffer{Value: renderbuffer})
}
func (g *GomobileContext) IsTexture(texture uint32) bool { func (g *GomobileContext) IsTexture(texture uint32) bool {
return g.ctx.IsTexture(gl.Texture{Value: texture}) return g.ctx.IsTexture(gl.Texture{Value: texture})
} }
@ -225,6 +263,10 @@ func (g *GomobileContext) ReadPixels(dst []byte, x int32, y int32, width int32,
g.ctx.ReadPixels(dst, int(x), int(y), int(width), int(height), gl.Enum(format), gl.Enum(xtype)) g.ctx.ReadPixels(dst, int(x), int(y), int(width), int(height), gl.Enum(format), gl.Enum(xtype))
} }
func (g *GomobileContext) RenderbufferStorage(target uint32, internalFormat uint32, width int32, height int32) {
g.ctx.RenderbufferStorage(gl.Enum(target), gl.Enum(internalFormat), int(width), int(height))
}
func (g *GomobileContext) Scissor(x, y, width, height int32) { func (g *GomobileContext) Scissor(x, y, width, height int32) {
g.ctx.Scissor(x, y, width, height) g.ctx.Scissor(x, y, width, height)
} }
@ -233,6 +275,14 @@ func (g *GomobileContext) ShaderSource(shader uint32, xstring string) {
g.ctx.ShaderSource(gl.Shader{Value: shader}, xstring) g.ctx.ShaderSource(gl.Shader{Value: shader}, xstring)
} }
func (g *GomobileContext) StencilFunc(func_ uint32, ref int32, mask uint32) {
g.ctx.StencilFunc(gl.Enum(func_), int(ref), mask)
}
func (g *GomobileContext) StencilOp(sfail, dpfail, dppass uint32) {
g.ctx.StencilOp(gl.Enum(sfail), gl.Enum(dpfail), gl.Enum(dppass))
}
func (g *GomobileContext) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte) { func (g *GomobileContext) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte) {
g.ctx.TexImage2D(gl.Enum(target), int(level), int(internalformat), int(width), int(height), gl.Enum(format), gl.Enum(xtype), pixels) g.ctx.TexImage2D(gl.Enum(target), int(level), int(internalformat), int(width), int(height), gl.Enum(format), gl.Enum(xtype), pixels)
} }

View File

@ -23,27 +23,34 @@ type Context interface {
BindAttribLocation(program uint32, index uint32, name string) BindAttribLocation(program uint32, index uint32, name string)
BindBuffer(target uint32, buffer uint32) BindBuffer(target uint32, buffer uint32)
BindFramebuffer(target uint32, framebuffer uint32) BindFramebuffer(target uint32, framebuffer uint32)
BindRenderbuffer(target uint32, renderbuffer uint32)
BindTexture(target uint32, texture uint32) BindTexture(target uint32, texture uint32)
BlendFunc(sfactor uint32, dfactor uint32) BlendFunc(sfactor uint32, dfactor uint32)
BufferData(target uint32, size int, data []byte, usage uint32) BufferData(target uint32, size int, data []byte, usage uint32)
BufferSubData(target uint32, offset int, data []byte) BufferSubData(target uint32, offset int, data []byte)
CheckFramebufferStatus(target uint32) uint32 CheckFramebufferStatus(target uint32) uint32
Clear(mask uint32)
ColorMask(red, green, blue, alpha bool)
CompileShader(shader uint32) CompileShader(shader uint32)
CreateProgram() uint32 CreateProgram() uint32
CreateShader(xtype uint32) uint32 CreateShader(xtype uint32) uint32
DeleteBuffers(buffers []uint32) DeleteBuffers(buffers []uint32)
DeleteFramebuffers(framebuffers []uint32) DeleteFramebuffers(framebuffers []uint32)
DeleteProgram(program uint32) DeleteProgram(program uint32)
DeleteRenderbuffers(renderbuffer []uint32)
DeleteShader(shader uint32) DeleteShader(shader uint32)
DeleteTextures(textures []uint32) DeleteTextures(textures []uint32)
Disable(cap uint32)
DisableVertexAttribArray(index uint32) DisableVertexAttribArray(index uint32)
DrawElements(mode uint32, count int32, xtype uint32, offset int) DrawElements(mode uint32, count int32, xtype uint32, offset int)
Enable(cap uint32) Enable(cap uint32)
EnableVertexAttribArray(index uint32) EnableVertexAttribArray(index uint32)
Flush() Flush()
FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32)
FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32)
GenBuffers(n int32) []uint32 GenBuffers(n int32) []uint32
GenFramebuffers(n int32) []uint32 GenFramebuffers(n int32) []uint32
GenRenderbuffers(n int32) []uint32
GenTextures(n int32) []uint32 GenTextures(n int32) []uint32
GetError() uint32 GetError() uint32
GetIntegerv(dst []int32, pname uint32) GetIntegerv(dst []int32, pname uint32)
@ -55,12 +62,16 @@ type Context interface {
GetUniformLocation(program uint32, name string) int32 GetUniformLocation(program uint32, name string) int32
IsFramebuffer(framebuffer uint32) bool IsFramebuffer(framebuffer uint32) bool
IsProgram(program uint32) bool IsProgram(program uint32) bool
IsRenderbuffer(renderbuffer uint32) bool
IsTexture(texture uint32) bool IsTexture(texture uint32) bool
LinkProgram(program uint32) LinkProgram(program uint32)
PixelStorei(pname uint32, param int32) PixelStorei(pname uint32, param int32)
ReadPixels(dst []byte, x int32, y int32, width int32, height int32, format uint32, xtype uint32) ReadPixels(dst []byte, x int32, y int32, width int32, height int32, format uint32, xtype uint32)
RenderbufferStorage(target uint32, internalFormat uint32, width int32, height int32)
Scissor(x, y, width, height int32) Scissor(x, y, width, height int32)
ShaderSource(shader uint32, xstring string) ShaderSource(shader uint32, xstring string)
StencilFunc(func_ uint32, ref int32, mask uint32)
StencilOp(sfail, dpfail, dppass uint32)
TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, format uint32, xtype uint32, pixels []byte)
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 []byte) TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels []byte)