作者:jacksca
项目:go-gles
func (shader Shader) Compile() {
C.glCompileShader(C.GLuint(shader))
status := C.GLint(0)
C.glGetShaderiv(C.GLuint(shader), C.GL_COMPILE_STATUS, &status)
if status != C.GL_TRUE {
loglen := C.GLint(0)
C.glGetShaderiv(C.GLuint(shader), C.GL_INFO_LOG_LENGTH, &loglen)
log := (*C.GLchar)(C.malloc(C.size_t(loglen)))
defer C.free(unsafe.Pointer(log))
C.glGetShaderInfoLog(C.GLuint(shader), C.GLsizei(loglen), nil, log)
panic(fmt.Errorf("Failed to compile %s: %s", shader.Type(), C.GoString((*C.char)(log))))
}
}
作者:remogatt
项目:egle
func GetShaderiv(
shader uint32, pname Enum, params *int32) {
C.glGetShaderiv(
C.GLuint(shader),
C.GLenum(pname),
(*C.GLint)(params))
}
作者:extram
项目:g
// NewShader creates a shader object of type typ, loads it with source code src and compiles it
func NewShader(typ int, src string) (Shader, error) {
var val C.GLint
shad := C.glCreateShader(C.GLenum(typ))
s := (*C.GLchar)(C.CString(src))
C.glShaderSource(shad, 1, &s, nil)
C.glCompileShader(shad)
C.glGetShaderiv(shad, COMPILE_STATUS, &val)
if val != TRUE {
C.glGetShaderiv(shad, INFO_LOG_LENGTH, &val)
buf := make([]C.GLchar, val+1)
C.glGetShaderInfoLog(shad, C.GLsizei(val), nil, &buf[0])
C.glDeleteShader(shad)
return Shader(0), errors.New(C.GoString((*C.char)(&buf[0])))
}
return Shader(shad), nil
}
作者:Miaqu
项目:moj
func GetShaderi(s Shader, pname Enum) (r0 int) {
defer func() {
errstr := errDrain()
log.Printf("gl.GetShaderi(%v, %v) %v%v", s, pname, r0, errstr)
}()
var params C.GLint
C.glGetShaderiv(s.c(), pname.c(), ¶ms)
return int(params)
}
作者:jimarnol
项目:g
func (shader Shader) GetSource() string {
var len C.GLint
C.glGetShaderiv(C.GLuint(shader), C.GLenum(SHADER_SOURCE_LENGTH), &len)
log := C.malloc(C.size_t(len + 1))
C.glGetShaderSource(C.GLuint(shader), C.GLsizei(len), nil, (*C.GLchar)(log))
defer C.free(log)
return C.GoString((*C.char)(log))
}
作者:vivica
项目:g
func (shader Shader) GetInfoLog() string {
var length C.GLint
C.glGetShaderiv(C.GLuint(shader), C.GLenum(INFO_LOG_LENGTH), &length)
// length is buffer size including null character
if length > 1 {
log := C.malloc(C.size_t(length))
defer C.free(log)
C.glGetShaderInfoLog(C.GLuint(shader), C.GLsizei(length), nil, (*C.GLchar)(log))
return C.GoString((*C.char)(log))
}
return ""
}
作者:Congenita
项目:goandroi
func GetShaderInfoLog(shader C.GLuint) string {
var logLen C.GLint
C.glGetShaderiv(shader, C.GL_INFO_LOG_LENGTH, &logLen)
var c C.GLchar
logLenBytes := int(logLen) * int(unsafe.Sizeof(c))
log := C.malloc(C.size_t(logLenBytes))
if log == nil {
panic("Failed to allocate shader log buffer")
}
defer C.free(log)
C.glGetShaderInfoLog(C.GLuint(shader), C.GLsizei(logLen), (*C.GLsizei)(unsafe.Pointer(nil)), (*C.GLchar)(log))
return string(C.GoBytes(log, C.int(logLenBytes)))
}
作者:Congenita
项目:goandroi
func loadShader(shaderType C.GLenum, source string) C.GLuint {
handle := C.glCreateShader(shaderType)
if handle == 0 {
panic(fmt.Errorf("Failed to create shader of type %v", shaderType))
}
sourceC := C.CString(source)
defer C.free(unsafe.Pointer(sourceC))
C.glShaderSource(handle, 1, (**C.GLchar)(unsafe.Pointer(&sourceC)), (*C.GLint)(unsafe.Pointer(nil)))
C.glCompileShader(handle)
var compiled C.GLint
C.glGetShaderiv(handle, C.GL_COMPILE_STATUS, &compiled)
if compiled != C.GL_TRUE {
log := GetShaderInfoLog(handle)
panic(fmt.Errorf("Failed to compile shader: %v, shader: %v", log, source))
}
return handle
}
作者:tanem
项目:amor
func GetShaderi(s Shader, pname Enum) int {
var params C.GLint
C.glGetShaderiv(s.c(), pname.c(), ¶ms)
return int(params)
}
作者:vivica
项目:g
func (shader Shader) Get(param GLenum) int {
var rv C.GLint
C.glGetShaderiv(C.GLuint(shader), C.GLenum(param), &rv)
return int(rv)
}
作者:jacksca
项目:go-gles
func (shader Shader) Type() ShaderType {
stype := C.GLint(0)
C.glGetShaderiv(C.GLuint(shader), C.GL_SHADER_TYPE, &stype)
return ShaderType(stype)
}
作者:eaburn
项目:g
// Get returns a parameter from a shader object
func (s Shader) Get(parm ShaderParameter) int {
var vl C.GLint
C.glGetShaderiv(C.GLuint(s), C.GLenum(parm), &vl)
return int(vl)
}
作者:nick-fedesn
项目:egle
func GetShaderiv(shader, pname uint, params []int32) []int32 {
C.glGetShaderiv(C.GLuint(shader), C.GLenum(pname), (*C.GLint)(unsafe.Pointer(¶ms[0])))
return params
}