本文整理汇总了Golang中C.GLuint函数的典型用法代码示例。如果您正苦于以下问题:Golang GLuint函数的具体用法?Golang GLuint怎么用?Golang GLuint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GLuint函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: DetachShader
func DetachShader(
program uint32, shader uint32) {
C.glDetachShader(
C.GLuint(program),
C.GLuint(shader))
}
示例2: Link
// Link links the attached shader objects
func (p *Program) Link() error {
var val, val2 C.GLint
C.glLinkProgram(p.i)
C.glGetProgramiv(p.i, LINK_STATUS, &val)
if val != TRUE {
C.glGetProgramiv(p.i, INFO_LOG_LENGTH, &val)
buf := make([]C.GLchar, val+1)
C.glGetProgramInfoLog(p.i, C.GLsizei(val), nil, &buf[0])
return errors.New(C.GoString((*C.char)(&buf[0])))
}
p.attr = make(map[string]C.GLuint)
C.glGetProgramiv(p.i, ACTIVE_ATTRIBUTES, &val)
C.glGetProgramiv(p.i, ACTIVE_ATTRIBUTE_MAX_LENGTH, &val2)
buf := make([]C.char, val2)
for i := C.GLuint(0); i < C.GLuint(val); i++ {
C.glGetActiveAttrib(p.i, i, C.GLsizei(val2), nil, nil, nil, (*C.GLchar)(&buf[0]))
p.attr[C.GoString(&buf[0])] = C.GLuint(C.glGetAttribLocation(p.i, (*C.GLchar)(&buf[0])))
}
p.uni = make(map[string]C.GLint)
C.glGetProgramiv(p.i, ACTIVE_UNIFORMS, &val)
C.glGetProgramiv(p.i, ACTIVE_UNIFORM_MAX_LENGTH, &val2)
buf = make([]C.char, val2)
for i := C.GLuint(0); i < C.GLuint(val); i++ {
C.glGetActiveUniform(p.i, i, C.GLsizei(val2), nil, nil, nil, (*C.GLchar)(&buf[0]))
p.uni[C.GoString(&buf[0])] = C.glGetUniformLocation(p.i, (*C.GLchar)(&buf[0]))
}
return nil
}
示例3: GetAttrib
func (program *Program) GetAttrib(name string) VertexAttrib {
cname := (*C.GLchar)(C.CString(name))
defer C.free(unsafe.Pointer(cname))
iloc := C.glGetAttribLocation(program.id, cname)
if iloc < 0 {
panic(fmt.Errorf("not an active uniform: %s", name))
}
loc := C.GLuint(iloc)
datatype := C.GLenum(0)
C.glGetActiveAttrib(program.id, C.GLuint(loc), 0, nil, nil, &datatype, nil)
switch datatype {
case C.GL_FLOAT:
return FloatAttrib{vattrib{loc}}
case C.GL_FLOAT_VEC2:
return Vec2Attrib{FloatAttrib{vattrib{loc}}}
case C.GL_FLOAT_VEC3:
return Vec3Attrib{FloatAttrib{vattrib{loc}}}
case C.GL_FLOAT_VEC4:
return Vec4Attrib{FloatAttrib{vattrib{loc}}}
default:
panic(fmt.Errorf("unsupported attribute type: %#x", datatype))
}
}
示例4: BindFragDataLocation
func (program Program) BindFragDataLocation(colorNumber int, name string) {
cname := glString(name)
defer freeString(cname)
C.glBindFragDataLocation(C.GLuint(program), C.GLuint(colorNumber), cname)
}
示例5: GetAttrib
func (program *Program) GetAttrib(name string) VertexAttrib {
cname := (*C.GLchar)(C.CString(name))
defer C.free(unsafe.Pointer(cname))
iloc := C.glGetAttribLocation(program.id, cname)
if iloc < 0 {
panic(fmt.Errorf("not an active attribute: %s", name))
}
loc := C.GLuint(iloc)
datatype := C.GLenum(0)
length := C.GLsizei(0)
size := C.GLint(0)
aname := [32]byte{}
C.glGetActiveAttrib(program.id, C.GLuint(loc), C.GLsizei(len(aname)), &length, &size, &datatype, (*C.GLchar)(unsafe.Pointer(&aname[0])))
switch datatype {
case C.GL_FLOAT:
return FloatAttrib{vattrib{loc}}
case C.GL_FLOAT_VEC2:
return Vec2Attrib{FloatAttrib{vattrib{loc}}}
case C.GL_FLOAT_VEC3:
return Vec3Attrib{FloatAttrib{vattrib{loc}}}
case C.GL_FLOAT_VEC4:
return Vec4Attrib{FloatAttrib{vattrib{loc}}}
default:
panic(fmt.Errorf("unsupported attribute type: %#x", datatype))
}
}
示例6: GetAttachedShaders
func (program Program) GetAttachedShaders() []Object {
var len C.GLint
C.glGetProgramiv(C.GLuint(program), C.GLenum(ACTIVE_UNIFORM_MAX_LENGTH), &len)
objects := make([]Object, len)
C.glGetAttachedShaders(C.GLuint(program), C.GLsizei(len), nil, *((**C.GLuint)(unsafe.Pointer(&objects))))
return objects
}
示例7: BindAttribLocation
func (program Program) BindAttribLocation(index AttribLocation, name string) {
cname := glString(name)
defer freeString(cname)
C.glBindAttribLocation(C.GLuint(program), C.GLuint(index), cname)
}
示例8: Parameters
// void glSamplerParameteri(GLuint sampler,GLenum pname,GLint param)
func (sampler SamplerObject) Parameters(parameters *SamplerParameters) {
C.glSamplerParameteri(C.GLuint(sampler), C.GL_TEXTURE_WRAP_R, parameters.WrapR)
C.glSamplerParameteri(C.GLuint(sampler), C.GL_TEXTURE_WRAP_S, parameters.WrapS)
C.glSamplerParameteri(C.GLuint(sampler), C.GL_TEXTURE_WRAP_T, parameters.WrapT)
C.glSamplerParameteri(C.GLuint(sampler), C.GL_TEXTURE_MIN_FILTER, parameters.MinFilter)
C.glSamplerParameteri(C.GLuint(sampler), C.GL_TEXTURE_MAG_FILTER, parameters.MagFilter)
}
示例9: BindAttribLocation
func BindAttribLocation(
program uint32, index uint32, name string) {
s := glString(name)
C.glBindAttribLocation(
C.GLuint(program),
C.GLuint(index),
s)
}
示例10: GetActiveUniform
func GetActiveUniform(program, index uint, bufsize int) (size int32, type_ uint32, name string) {
cs := CString(name)
defer C.free(unsafe.Pointer(cs))
C.glGetActiveUniform(C.GLuint(program), C.GLuint(index),
C.GLsizei(bufsize), nil, (*C.GLint)(&size), (*C.GLenum)(&type_), cs)
name = GoString(cs)
return
}
示例11: GetActiveUniform
func (program Program) GetActiveUniform(index UniformLocation) (string, GLenum, int) {
var written C.GLsizei
var size C.GLint
var tp C.GLenum
//Allocate a buffer of 64 characters to write variable names to
var buffer *C.GLchar = (*C.GLchar)(C.malloc(64))
defer freeString(buffer)
C.glGetActiveUniform(C.GLuint(program), C.GLuint(index), C.GLsizei(128), &written, &size, &tp, buffer)
return C.GoStringN((*C.char)(buffer), C.int(written)), GLenum(tp), int(size)
}
示例12: GetSource
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))
}
示例13: GetInfoLog
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 ""
}
示例14: GetActiveUniform
func GetActiveUniform(
program uint32, index uint32, bufsize Sizei,
length *Sizei, size *int32, type_ *Enum, name *string) {
s := glString(*name)
C.glGetActiveUniform(
C.GLuint(program),
C.GLuint(index),
C.GLsizei(bufsize),
(*C.GLsizei)(length),
(*C.GLint)(size),
(*C.GLenum)(type_),
s)
name = goString(s)
}
示例15: Compile
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))))
}
}