本文整理汇总了Golang中github.com/go-gl/gl/v3/3-core/gl.Str函数的典型用法代码示例。如果您正苦于以下问题:Golang Str函数的具体用法?Golang Str怎么用?Golang Str使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Str函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Render
// Rendering this LineRender.
func (lr *LineRender) Render() {
// Binding the appropriate information.
gl.BindVertexArray(lr.vao)
gl.BindBuffer(gl.ARRAY_BUFFER, lr.vbo)
gl.BindBuffer(gl.ELEMENT_ARRAY_BUFFER, lr.ebo)
gl.UseProgram(lr.shaderProgram)
// Loading up vertex attributes.
vertAttrib := uint32(gl.GetAttribLocation(lr.shaderProgram, gl.Str("vert\x00")))
gl.EnableVertexAttribArray(vertAttrib)
gl.VertexAttribPointer(vertAttrib, 2, gl.FLOAT, false, 2*4, gl.PtrOffset(0))
// Line thickness information.
gl.Uniform1f(
gl.GetUniformLocation(lr.shaderProgram, gl.Str("in_thickness\x00")),
lr.weight)
// Fragment shader color information.
gl.Uniform4f(
gl.GetUniformLocation(lr.shaderProgram, gl.Str("in_color\x00")),
lr.color.Red,
lr.color.Green,
lr.color.Blue,
lr.color.Alpha)
gl.BindFragDataLocation(lr.shaderProgram, 0, gl.Str("out_color\x00"))
// Performing the render.
gl.DrawElements(gl.LINE_STRIP, lr.points, gl.UNSIGNED_INT, nil)
}
开发者ID:crockeo,项目名称:go-tuner,代码行数:31,代码来源:linerender.go
示例2: compileShader
func compileShader(sourceFile string, shaderType uint32) (uint32, error) {
// read shader source from file
sourceBytes, err := ioutil.ReadFile(sourceFile)
if err != nil {
return 0, err
}
// allow use as a C string
csource := gl.Str(string(sourceBytes) + "\x00")
// load into OpenGL
shader := gl.CreateShader(shaderType)
gl.ShaderSource(shader, 1, &csource, nil)
gl.CompileShader(shader)
// error handling
var status int32
gl.GetShaderiv(shader, gl.COMPILE_STATUS, &status)
if status == gl.FALSE {
var logLength int32
gl.GetShaderiv(shader, gl.INFO_LOG_LENGTH, &logLength)
log := strings.Repeat("\x00", int(logLength+1))
gl.GetShaderInfoLog(shader, logLength, nil, gl.Str(log))
return 0, fmt.Errorf("failed to compile %v: %v", sourceFile, log)
}
return shader, nil
}
开发者ID:angus-g,项目名称:gopengl,代码行数:29,代码来源:main.go
示例3: CreateRenderObject
// Creating a RenderObject with a given shaderProgram, texture, and set of
// vertices.
func CreateRenderObject(shaderProgram ShaderProgram, texture Texture, vertices []float32) *RenderObject {
renderObject := new(RenderObject)
// Creating the basic information.
renderObject.shaderProgram = uint32(shaderProgram)
renderObject.texture = uint32(texture)
gl.GenVertexArrays(1, &renderObject.vao)
gl.GenBuffers(1, &renderObject.vbo)
gl.GenBuffers(1, &renderObject.ebo)
// Filling the RenderObject with information.
gl.BindVertexArray(renderObject.vao)
gl.BindBuffer(gl.ARRAY_BUFFER, renderObject.vbo)
gl.BufferData(gl.ARRAY_BUFFER, len(vertices)*4, gl.Ptr(vertices), gl.STATIC_DRAW)
gl.BindBuffer(gl.ELEMENT_ARRAY_BUFFER, renderObject.ebo)
vertOrder := []uint32{
0, 1, 2,
2, 3, 0,
}
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(vertOrder)*4, gl.Ptr(vertOrder), gl.STATIC_DRAW)
// Loading up vertex attributes.
vertAttrib := uint32(gl.GetAttribLocation(renderObject.shaderProgram, gl.Str("vert\x00")))
gl.EnableVertexAttribArray(vertAttrib)
gl.VertexAttribPointer(vertAttrib, 2, gl.FLOAT, false, 4*4, gl.PtrOffset(0))
// Loading up texture attributes.
texAttrib := uint32(gl.GetAttribLocation(renderObject.shaderProgram, gl.Str("vertTexCoord\x00")))
gl.EnableVertexAttribArray(texAttrib)
gl.VertexAttribPointer(texAttrib, 2, gl.FLOAT, false, 4*4, gl.PtrOffset(2*4))
return renderObject
}
开发者ID:crockeo,项目名称:go-tuner,代码行数:37,代码来源:renderobject.go
示例4: NewEffectsRenderer
func NewEffectsRenderer(w, h int) (r *EffectsRenderer, err error) {
r = &EffectsRenderer{
width: w,
height: h,
Color: mgl32.Vec3{0.0, 0.0, 0.0},
}
_, _, r.oldwidth, r.oldheight = twodee.GetInteger4(gl.VIEWPORT)
if r.shader, err = twodee.BuildProgram(EFFECTS_VERTEX, EFFECTS_FRAGMENT); err != nil {
return
}
r.positionLoc = uint32(gl.GetAttribLocation(r.shader, gl.Str("a_Position\x00")))
r.textureLoc = uint32(gl.GetAttribLocation(r.shader, gl.Str("a_TextureCoordinates\x00")))
r.textureUnitLoc = gl.GetUniformLocation(r.shader, gl.Str("u_TextureUnit\x00"))
r.colorLoc = gl.GetUniformLocation(r.shader, gl.Str("v_Color\x00"))
gl.BindFragDataLocation(r.shader, 0, gl.Str("v_FragData\x00"))
var size float32 = 1.0
var rect = []float32{
-size, -size, 0.0, 0, 0,
-size, size, 0.0, 0, 1,
size, -size, 0.0, 1, 0,
size, size, 0.0, 1, 1,
}
if r.coords, err = twodee.CreateVBO(len(rect)*4, rect, gl.STATIC_DRAW); err != nil {
return
}
if r.framebuffer, r.texture, err = r.initFramebuffer(w, h); err != nil {
return
}
return
}
开发者ID:pikkpoiss,项目名称:ld33,代码行数:31,代码来源:effects.go
示例5: LoadShader
// Attempting to load a single shader.
func LoadShader(path string, shaderType uint32) (Shader, error, bool) {
// Loading in the file contents.
file, err := os.Open(path)
if err != nil {
return 0, err, false
}
defer file.Close()
contentBytes, err := ioutil.ReadAll(file)
if err != nil {
return 0, err, false
}
content := gl.Str(string(contentBytes) + "\x00")
// Creating and compiling the shader.
shader := gl.CreateShader(shaderType)
gl.ShaderSource(shader, 1, &content, nil)
gl.CompileShader(shader)
var compiled int32
gl.GetShaderiv(shader, gl.COMPILE_STATUS, &compiled)
if compiled == gl.FALSE {
var length int32
gl.GetShaderiv(shader, gl.INFO_LOG_LENGTH, &length)
log := strings.Repeat("\x00", int(length+1))
gl.GetShaderInfoLog(shader, length, nil, gl.Str(log))
return 0, errors.New("Shader failed to compile: " + log), true
}
return Shader(shader), nil, false
}
开发者ID:crockeo,项目名称:go-tuner,代码行数:35,代码来源:resources.go
示例6: DrawRectangle
func (c Context) DrawRectangle(x, y, w, h float32, color Color) {
gl.UseProgram(c.program)
model := mgl32.Translate3D(x, y, 0).Mul4(mgl32.Scale3D(w, h, 0))
modelUniform := gl.GetUniformLocation(c.program, gl.Str("model\x00"))
gl.UniformMatrix4fv(modelUniform, 1, false, &model[0])
colorArray := []float32{color.B, color.G, color.R}
colorUniform := gl.GetUniformLocation(c.program, gl.Str("color\x00"))
gl.Uniform4fv(colorUniform, 1, &colorArray[0])
gl.DrawArrays(gl.TRIANGLES, 0, 6)
}
开发者ID:esenti,项目名称:godraw,代码行数:14,代码来源:godraw.go
示例7: NewLinesRenderer
func NewLinesRenderer(camera *Camera) (lr *LinesRenderer, err error) {
var (
program uint32
vbos = make([]uint32, 2)
point TexturedPoint
)
if program, err = BuildProgram(LINES_VERTEX, LINES_FRAGMENT); err != nil {
return
}
gl.GenBuffers(2, &vbos[0])
lr = &LinesRenderer{
Renderer: NewRenderer(camera),
program: program,
buffer: vbos[0],
indexBuffer: vbos[1],
bufferBytes: 0,
positionLoc: uint32(gl.GetAttribLocation(program, gl.Str("v_Position\x00"))),
normalLoc: uint32(gl.GetAttribLocation(program, gl.Str("v_Normal\x00"))),
miterLoc: uint32(gl.GetAttribLocation(program, gl.Str("f_Miter\x00"))),
modelviewLoc: gl.GetUniformLocation(program, gl.Str("m_ModelView\x00")),
projectionLoc: gl.GetUniformLocation(program, gl.Str("m_Projection\x00")),
thicknessLoc: gl.GetUniformLocation(program, gl.Str("f_Thickness\x00")),
colorLoc: gl.GetUniformLocation(program, gl.Str("v_Color\x00")),
innerLoc: gl.GetUniformLocation(program, gl.Str("f_Inner\x00")),
offPosition: gl.PtrOffset(int(unsafe.Offsetof(point.X))),
offNormal: gl.PtrOffset(int(unsafe.Offsetof(point.TextureX))),
offMiter: gl.PtrOffset(int(unsafe.Offsetof(point.Z))),
stride: int32(unsafe.Sizeof(point)),
}
if e := gl.GetError(); e != 0 {
err = fmt.Errorf("ERROR: OpenGL error %X", e)
}
return
}
开发者ID:pikkpoiss,项目名称:twodee,代码行数:34,代码来源:renderer_lines.go
示例8: CompileShader
func CompileShader(stype uint32, source string) (shader uint32, err error) {
csource := gl.Str(source)
shader = gl.CreateShader(stype)
gl.ShaderSource(shader, 1, &csource, nil)
gl.CompileShader(shader)
var status int32
if gl.GetShaderiv(shader, gl.COMPILE_STATUS, &status); status == gl.FALSE {
var length int32
gl.GetShaderiv(shader, gl.INFO_LOG_LENGTH, &length)
log := strings.Repeat("\x00", int(length+1))
gl.GetShaderInfoLog(shader, length, nil, gl.Str(log))
err = fmt.Errorf("ERROR shader compile:\n%s", log)
}
return
}
开发者ID:pikkpoiss,项目名称:twodee,代码行数:15,代码来源:renderer.go
示例9: getUniformLocation
func getUniformLocation(program uint32, name string) (int32, error) {
u := gl.GetUniformLocation(program, gl.Str(name+"\x00"))
if u == -1 {
return 0, fmt.Errorf("couldn't get uniform location: %q", name)
}
return u, nil
}
开发者ID:btmura,项目名称:blockcillin,代码行数:7,代码来源:gl.go
示例10: NewParticleSystem
func NewParticleSystem(position, direction glm.Vec3, size int) *ParticleSystem {
ps := ParticleSystem{}
ps.root = position
ps.direction = direction
ps.transformfeedbacks = gl2.GenTransformFeedbacks(2)
MustNotGLError()
ps.buffers = gl2.GenBuffers(2)
MustNotGLError()
ps.particles = make([]Particle, size)
ps.isFirst = true
ps.program = gl2.CreateProgram()
vss, err := CompileShader(vs, gl2.VERTEX_SHADER)
if err != nil {
D(err)
}
ps.program.AttachShader(vss.Loc)
gss, err := CompileShader(gs, gl2.GEOMETRY_SHADER)
if err != nil {
D(err)
}
ps.program.AttachShader(gss.Loc)
fss, err := CompileShader(fs, gl2.FRAGMENT_SHADER)
if err != nil {
D(err)
}
ps.program.AttachShader(fss.Loc)
ps.program.Link()
if !ps.program.GetLinkStatus() {
var logLength int32
gl.GetProgramiv(uint32(ps.program), gl.INFO_LOG_LENGTH, &logLength)
log := strings.Repeat("\x00", int(logLength+1))
gl.GetProgramInfoLog(uint32(ps.program), logLength, nil, gl.Str(log))
}
ps.gDeltaTimeMillis = ps.program.GetUniformLocation("gDeltaTimeMillis")
ps.gTime = ps.program.GetUniformLocation("gTime")
ps.gRandomTexture = ps.program.GetUniformLocation("gRandomTexture")
ps.gLauncherLifetime = ps.program.GetUniformLocation("gLauncherLifetime")
ps.gShellLifetime = ps.program.GetUniformLocation("gShellLifetime")
ps.gSecondaryShellLifetime = ps.program.GetUniformLocation("gSecondaryShellLifetime")
ps.particles[0].Lifetime = 0
ps.particles[0].Position = position
ps.particles[0].Velocity = glm.Vec3{0, 0, 0}
ps.particles[0].Type = Launcher
for i := 0; i < len(ps.buffers); i++ {
ps.transformfeedbacks[i].Bind()
MustNotGLError()
ps.buffers[i].Bind(gl2.ARRAY_BUFFER)
MustNotGLError()
ps.buffers[i].Data(gl2.ARRAY_BUFFER, int(unsafe.Sizeof(Particle{}))*len(ps.particles), unsafe.Pointer(&ps.particles[0]), gl2.DYNAMIC_DRAW)
MustNotGLError()
ps.transformfeedbacks[i].BindBufferBase(gl2.TRANSFORM_FEEDBACK_BUFFER, 0, ps.buffers[i])
MustNotGLError()
}
return &ps
}
开发者ID:peterudkmaya11,项目名称:lux,代码行数:60,代码来源:particlesystems.go
示例11: GetUniformLocation
func GetUniformLocation(shaderName, uniformName string) (int32, error) {
prog, ok := shader_progs[shaderName]
if !ok {
return -1, fmt.Errorf("No shader named '%s'", shaderName)
}
return gl.GetUniformLocation(prog, gl.Str(fmt.Sprintf("%s\x00", uniformName))), nil
}
开发者ID:runningwild,项目名称:glop,代码行数:7,代码来源:shader.go
示例12: newProgram
func newProgram(vertexShaderSource, fragmentShaderSource string) (uint32, error) {
vertexShader, err := compileShader(vertexShaderSource, gl.VERTEX_SHADER)
if err != nil {
return 0, err
}
fragmentShader, err := compileShader(fragmentShaderSource, gl.FRAGMENT_SHADER)
if err != nil {
return 0, err
}
program := gl.CreateProgram()
gl.AttachShader(program, vertexShader)
gl.AttachShader(program, fragmentShader)
gl.LinkProgram(program)
var status int32
gl.GetProgramiv(program, gl.LINK_STATUS, &status)
if status == gl.FALSE {
var logLength int32
gl.GetProgramiv(program, gl.INFO_LOG_LENGTH, &logLength)
log := strings.Repeat("\x00", int(logLength+1))
gl.GetProgramInfoLog(program, logLength, nil, gl.Str(log))
return 0, fmt.Errorf("failed to link program: %v", log)
}
gl.DeleteShader(vertexShader)
gl.DeleteShader(fragmentShader)
return program, nil
}
开发者ID:esenti,项目名称:godraw,代码行数:34,代码来源:godraw.go
示例13: Attrib
func (p *Program) Attrib(name string, stride uintptr) *VertexAttribute {
var nameStr = gl.Str(fmt.Sprintf("%v\x00", name))
return &VertexAttribute{
location: uint32(gl.GetAttribLocation(p.program, nameStr)),
stride: stride,
}
}
开发者ID:kurrik,项目名称:opengl-benchmarks,代码行数:7,代码来源:program.go
示例14: getAttribLocation
func getAttribLocation(program uint32, name string) (uint32, error) {
a := gl.GetAttribLocation(program, gl.Str(name+"\x00"))
if a == -1 {
return 0, fmt.Errorf("couldn't get attrib location: %q", name)
}
// Cast to uint32 for EnableVertexAttribArray and VertexAttribPointer better.
return uint32(a), nil
}
开发者ID:btmura,项目名称:blockcillin,代码行数:8,代码来源:gl.go
示例15: initMVC
func (shader *MVCShader) initMVC() error {
uniform := gl.GetUniformLocation(shader.Handle, gl.Str("mvc\x00"))
if uniform == -1 {
return errors.New("GetUniformLocation Failed")
}
shader.mVCHandle = uniform
return nil
}
开发者ID:manueldun,项目名称:Game,代码行数:8,代码来源:mvcShader.go
示例16: UniformBlock
func (p *Program) UniformBlock(name string, binding uint32) *UniformBlock {
var (
nameStr = gl.Str(fmt.Sprintf("%v\x00", name))
index = uint32(gl.GetUniformBlockIndex(p.program, nameStr))
)
gl.UniformBlockBinding(p.program, index, binding)
return &UniformBlock{
binding: binding,
}
}
开发者ID:kurrik,项目名称:opengl-benchmarks,代码行数:10,代码来源:program.go
示例17: compileShader
func compileShader(source string, shaderType uint32) (uint32, error) {
shader := gl.CreateShader(shaderType)
csource := gl.Str(source)
gl.ShaderSource(shader, 1, &csource, nil)
gl.CompileShader(shader)
var status int32
gl.GetShaderiv(shader, gl.COMPILE_STATUS, &status)
if status == gl.FALSE {
var logLength int32
gl.GetShaderiv(shader, gl.INFO_LOG_LENGTH, &logLength)
log := strings.Repeat("\x00", int(logLength+1))
gl.GetShaderInfoLog(shader, logLength, nil, gl.Str(log))
return 0, fmt.Errorf("failed to compile %v: %v", source, log)
}
return shader, nil
}
开发者ID:CubeLite,项目名称:gltext-1,代码行数:19,代码来源:shaders.go
示例18: getInfoLog
func getInfoLog(getLenFn GetLenFn, getLogFn GetInfoLogFn) func(object uint32) string {
return func(object uint32) string {
var logLength int32
getLenFn(object, gl.INFO_LOG_LENGTH, &logLength)
tlog.Println("infologlen: ", logLength)
log := strings.Repeat("\x00", int(logLength+1))
getLogFn(object, logLength, nil, gl.Str(log))
tlog.Println("infolog: ", log)
return log
}
}
开发者ID:hialin,项目名称:hialin,代码行数:11,代码来源:lowlevel.go
示例19: LoadShaderProgram
// Attempting to load a ShaderProgram from a given location on the disk. It
// looks for file starting at the path, and then with the respective suffixes of
// .vert, .frag, and .geom.
func LoadShaderProgram(path string) (ShaderProgram, error) {
loaded := 0
// Loading the vertex shader.
vert, err, major := LoadShader(path+".vert", gl.VERTEX_SHADER)
handleShaderLoad("vert", err, major, &loaded)
// Loading the fragment shader.
frag, err, major := LoadShader(path+".frag", gl.FRAGMENT_SHADER)
handleShaderLoad("frag", err, major, &loaded)
// Loading the geometry shader.
geom, err, major := LoadShader(path+".geom", gl.GEOMETRY_SHADER)
handleShaderLoad("geom", err, major, &loaded)
// Making sure we've loaded any shaders.
if loaded == 0 {
return 0, errors.New("Cannot make a shader program without any shaders.")
}
// Creating a loopable structure of the shaders.
shaders := []uint32{
uint32(vert),
uint32(frag),
uint32(geom),
}
program := gl.CreateProgram()
for _, shader := range shaders {
gl.AttachShader(program, shader)
}
gl.LinkProgram(program)
// Destroying the shaders after linking.
for _, shader := range shaders {
gl.DeleteShader(shader)
}
// Checking that it linked correctly.
var linked int32
gl.GetProgramiv(program, gl.LINK_STATUS, &linked)
if linked == gl.FALSE {
var length int32
gl.GetProgramiv(program, gl.INFO_LOG_LENGTH, &length)
log := strings.Repeat("\x00", int(length+1))
gl.GetProgramInfoLog(program, length, nil, gl.Str(log))
return 0, errors.New("Shader program failed to link: " + log)
}
return ShaderProgram(program), nil
}
开发者ID:crockeo,项目名称:go-tuner,代码行数:56,代码来源:resources.go
示例20: linkProgram
func (p *Program) linkProgram(vertex uint32, fragment uint32) (program uint32, err error) {
program = gl.CreateProgram()
gl.AttachShader(program, vertex)
gl.AttachShader(program, fragment)
gl.BindFragDataLocation(program, 0, gl.Str("v_FragData\x00"))
if e := gl.GetError(); e != 0 {
err = fmt.Errorf("ERROR program.BindFragDataLocation %X", e)
return
}
gl.LinkProgram(program)
var status int32
if gl.GetProgramiv(program, gl.LINK_STATUS, &status); status == gl.FALSE {
var length int32
gl.GetProgramiv(program, gl.INFO_LOG_LENGTH, &length)
log := strings.Repeat("\x00", int(length+1))
gl.GetProgramInfoLog(program, length, nil, gl.Str(log))
err = fmt.Errorf("ERROR program link:\n%s", log)
}
gl.DeleteShader(vertex)
gl.DeleteShader(fragment)
return
}
开发者ID:kurrik,项目名称:opengl-benchmarks,代码行数:22,代码来源:program.go
注:本文中的github.com/go-gl/gl/v3/3-core/gl.Str函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论