本文整理汇总了Golang中github.com/go-gl/gl.GenBuffer函数的典型用法代码示例。如果您正苦于以下问题:Golang GenBuffer函数的具体用法?Golang GenBuffer怎么用?Golang GenBuffer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GenBuffer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: NewModel
// Create a new model from the given data slice.
func NewModel(vertices []Vertex, indices []uint32) (*Model, error) {
// TODO add error detection
m := new(Model)
m.vertices, m.indices = vertices, indices
m.program = &DefaultShaderProgram
m.vao = gl.GenVertexArray()
m.vao.Bind()
m.vbo = gl.GenBuffer()
m.vbo.Bind(gl.ARRAY_BUFFER)
m.ibo = gl.GenBuffer()
m.ibo.Bind(gl.ELEMENT_ARRAY_BUFFER)
vSize := int(unsafe.Sizeof(m.vertices[0]))
uSize := int(unsafe.Sizeof(uint32(0)))
gl.BufferData(gl.ARRAY_BUFFER, len(m.vertices)*vSize, &m.vertices[0],
gl.STATIC_DRAW)
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(m.indices)*uSize, &m.indices[0],
gl.STATIC_DRAW)
posLoc.EnableArray()
colorLoc.EnableArray()
posLoc.AttribPointer(3, gl.FLOAT, false, vSize, uintptr(0))
colorLoc.AttribPointer(4, gl.FLOAT, false, vSize,
uintptr(int(unsafe.Sizeof(float32(0))*3)))
colorLoc.DisableArray()
posLoc.DisableArray()
m.vbo.Unbind(gl.ARRAY_BUFFER)
m.ibo.Unbind(gl.ELEMENT_ARRAY_BUFFER)
return m, nil
}
开发者ID:Nvveen,项目名称:Goliath,代码行数:34,代码来源:model.go
示例2: LoadMesh
func (self *OpenGLRenderer) LoadMesh(mesh *render.Mesh) {
if len(mesh.VertexList) == 0 {
log.Println("WARNING Stopping load of mesh [", mesh.Name, "] with no verticies")
return
}
vertexArrayObj := gl.GenVertexArray()
vertexArrayObj.Bind()
vertexBuffer := gl.GenBuffer()
vertexBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(mesh.VertexList)*4, mesh.VertexList, gl.STATIC_DRAW)
attribLoc := gl.AttribLocation(0)
attribLoc.EnableArray()
attribLoc.AttribPointer(3, gl.FLOAT, false, 0, nil)
if len(mesh.UVList) > 0 {
uvBuffer := gl.GenBuffer()
uvBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(mesh.UVList)*4, mesh.UVList, gl.STATIC_DRAW)
attribLoc := gl.AttribLocation(1)
attribLoc.EnableArray()
attribLoc.AttribPointer(2, gl.FLOAT, false, 0, nil)
mesh.UVBuffer = uvBuffer
} else if len(mesh.ColorList) > 0 {
colorBuffer := gl.GenBuffer()
colorBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(mesh.ColorList)*4, mesh.ColorList, gl.STATIC_DRAW)
attribLoc := gl.AttribLocation(1)
attribLoc.EnableArray()
attribLoc.AttribPointer(3, gl.FLOAT, false, 0, nil)
mesh.ColorBuffer = colorBuffer
}
if len(mesh.IndexList) > 0 {
indexBuffer := gl.GenBuffer()
indexBuffer.Bind(gl.ELEMENT_ARRAY_BUFFER)
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(mesh.IndexList)*4, mesh.IndexList, gl.STATIC_DRAW)
mesh.IndexBuffer = indexBuffer
}
mesh.VertexArrayObj = vertexArrayObj
mesh.VertexBuffer = vertexBuffer
}
开发者ID:jasonroelofs,项目名称:slartibartfast,代码行数:50,代码来源:opengl_renderer.go
示例3: MakeBuffer
func MakeBuffer(target gl.GLenum, size int, data interface{}) gl.Buffer {
buffer := gl.GenBuffer()
buffer.Bind(target)
gl.BufferData(target, size, data, gl.STATIC_DRAW)
gl.BufferUnbind(target)
return buffer
}
开发者ID:samnm,项目名称:goblocks,代码行数:7,代码来源:utils.go
示例4: NewIndex
// NewIndex creates a new element index
func NewIndex(data []uint16) *Index {
glBuffer := gl.GenBuffer()
glBuffer.Bind(gl.ELEMENT_ARRAY_BUFFER)
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(data)*int(glh.Sizeof(gl.UNSIGNED_SHORT)), data, gl.STATIC_DRAW)
return &Index{glBuffer: glBuffer, count: len(data)}
}
开发者ID:nobonobo,项目名称:go-three,代码行数:8,代码来源:index.go
示例5: newVertexBuffer
func newVertexBuffer(geometry Shape) gl.Buffer {
result := []float32{}
faces := geometry.Faces()
vertices := geometry.Vertices()
if len(faces) > 0 {
// Handle faces
for _, face := range faces {
for i := 0; i < 3; i++ {
vertex := vertices[face.At(i)]
result = append(result, vertex.X(), vertex.Y(), vertex.Z())
}
}
} else {
// Handle plain vertices
for _, vertex := range geometry.Vertices() {
result = append(result, vertex.X(), vertex.Y(), vertex.Z())
}
}
glBuffer := gl.GenBuffer()
glBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(result)*3*4, result, gl.STATIC_DRAW)
return glBuffer
}
开发者ID:nobonobo,项目名称:go-three,代码行数:27,代码来源:object3d.go
示例6: ReadTextureFromGPU
func (t *Texture) ReadTextureFromGPU() []byte {
t.Bind()
b := gl.GenBuffer()
b.Bind(gl.PIXEL_UNPACK_BUFFER)
gl.BufferData(gl.PIXEL_UNPACK_BUFFER, t.Width()*t.Height()*t.PixelSize(), 0, gl.STREAM_DRAW)
//gl.GetTexImage(t.target, 0, t.format, buffer)
b.Bind(gl.PIXEL_UNPACK_BUFFER)
gl.TexSubImage2D(t.target, 0, 0, 0, t.Width(), t.Height(), t.format, t.typ, unsafe.Pointer(uintptr(0)))
b.Bind(gl.PIXEL_UNPACK_BUFFER)
l := t.Width() * t.Height() * t.PixelSize()
gl.BufferData(gl.PIXEL_UNPACK_BUFFER, t.Width()*t.Height()*t.PixelSize(), 0, gl.STREAM_DRAW)
ptr := gl.MapBuffer(gl.PIXEL_UNPACK_BUFFER, gl.WRITE_ONLY)
var x []byte
s := (*reflect.SliceHeader)(unsafe.Pointer(&x))
s.Data = uintptr(ptr)
s.Len = l
s.Cap = l
gl.UnmapBuffer(gl.PIXEL_UNPACK_BUFFER)
return x
}
开发者ID:gulinfang,项目名称:GarageEngine,代码行数:26,代码来源:Texture.go
示例7: init
// init initializes some of the attribute fields.
// These will be defined by the mesh buffer.
func (a *Attr) init(mode RenderMode) {
switch mode {
case RenderClassic, RenderArrays:
// No VBO in classic and vertex array modes.
default:
a.vbo = gl.GenBuffer()
}
}
开发者ID:nobonobo,项目名称:glh,代码行数:10,代码来源:meshattr.go
示例8: main
func main() {
if err := glfw.Init(); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err.Error())
return
}
defer glfw.Terminate()
glfw.OpenWindowHint(glfw.FsaaSamples, 4)
glfw.OpenWindowHint(glfw.OpenGLVersionMajor, 3)
glfw.OpenWindowHint(glfw.OpenGLVersionMinor, 3)
glfw.OpenWindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
if err := glfw.OpenWindow(1024, 768, 0, 0, 0, 0, 32, 0, glfw.Windowed); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err.Error())
return
}
gl.Init() // Can't find gl.GLEW_OK or any variation, not sure how to check if this worked
gl.GetError() // Ignore error
glfw.SetWindowTitle("Tutorial 02")
glfw.Enable(glfw.StickyKeys)
gl.ClearColor(0., 0., 0.4, 0.)
prog := helper.MakeProgram("SimpleVertexShader.vertexshader", "SimpleFragmentShader.fragmentshader")
vBufferData := [...]float32{
-1., -1., 0.,
1., -1., 0.,
0., 1., 0.}
vertexArray := gl.GenVertexArray()
vertexArray.Bind()
buffer := gl.GenBuffer()
buffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(vBufferData)*4, &vBufferData, gl.STATIC_DRAW)
// Equivalent to a do... while
for ok := true; ok; ok = (glfw.Key(glfw.KeyEsc) != glfw.KeyPress && glfw.WindowParam(glfw.Opened) == gl.TRUE) {
gl.Clear(gl.COLOR_BUFFER_BIT)
prog.Use()
attribLoc := gl.AttribLocation(0)
attribLoc.EnableArray()
buffer.Bind(gl.ARRAY_BUFFER)
attribLoc.AttribPointer(3, gl.FLOAT, false, 0, nil)
gl.DrawArrays(gl.TRIANGLES, 0, 3)
attribLoc.DisableArray()
glfw.SwapBuffers()
}
}
开发者ID:GlenKelley,项目名称:mathgl,代码行数:58,代码来源:main.go
示例9: gen
func (buffer *baseBuffer) gen() {
if buffer.name == 0 {
buffer.name = gl.GenBuffer()
if err := CheckGlError(); err != nil {
err.Description = "gl.GenBuffer()"
panic(err)
}
}
}
开发者ID:Niriel,项目名称:daggor,代码行数:9,代码来源:buffer.go
示例10: Initialize
func (r *Renderer) Initialize() {
r.vertices = []mapVertex{
{200, 200, 0, 1, 1, 1, 1, 0, 0},
{218, 200, 0, 1, 0, 0, 1, 0, 0},
}
vs, err := LoadShader(vertexShader, gl.VERTEX_SHADER)
if err != nil {
panic(err)
}
gs, err := LoadShader(geometryShader, gl.GEOMETRY_SHADER)
if err != nil {
panic(err)
}
fs, err := LoadShader(fragmentShader, gl.FRAGMENT_SHADER)
if err != nil {
panic(err)
}
gl.ClearColor(0, 1, 0, 0)
// Create the VAO
// GL 3+ allows us to store the vertex layout in a vertex array object (VAO).
r.vao = gl.GenVertexArray()
r.vao.Bind()
// Create VBO
r.vbo = gl.GenBuffer()
r.vbo.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(r.vertices)*4*9, r.vertices, gl.DYNAMIC_DRAW)
prog, err := LoadProgram(vs, gs, fs)
if err != nil {
panic(err)
}
prog.Use()
r.prog = prog
r.mvmLocation = r.prog.GetUniformLocation("modelview_matrix")
pos := r.prog.GetAttribLocation("in_position")
color := r.prog.GetAttribLocation("in_color")
texcoord := r.prog.GetAttribLocation("in_texcoord")
// FIXME: size math
pos.AttribPointer(3, gl.FLOAT, false, 9*4, nil)
color.AttribPointer(4, gl.FLOAT, false, 9*4, uintptr(3*4))
texcoord.AttribPointer(2, gl.FLOAT, false, 9*4, uintptr(7*4))
pos.EnableArray()
color.EnableArray()
texcoord.EnableArray()
}
开发者ID:fatman2021,项目名称:mapeditor,代码行数:57,代码来源:renderer.go
示例11: render
func (d *DrawImage) render() error {
fn := func(idx int) (err error) {
defer func() {
//err = recover()
}()
vbuf := gl.GenBuffer()
vbuf.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(d.vertex[idx])*4, d.vertex[idx], gl.STATIC_DRAW)
panicGlError()
defer vbuf.Delete()
uvbuf := gl.GenBuffer()
uvbuf.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(d.uv[idx])*4, d.uv[idx], gl.STATIC_DRAW)
panicGlError()
defer uvbuf.Delete()
vloc := gl.AttribLocation(0)
vloc.EnableArray()
vbuf.Bind(gl.ARRAY_BUFFER)
vloc.AttribPointer(3, gl.FLOAT, false, 0, nil)
panicGlError()
defer vloc.DisableArray()
uvloc := gl.AttribLocation(1)
uvloc.EnableArray()
uvbuf.Bind(gl.ARRAY_BUFFER)
uvloc.AttribPointer(2, gl.FLOAT, false, 0, nil)
panicGlError()
defer uvloc.DisableArray()
gl.DrawArrays(gl.TRIANGLES, 0, 3)
return checkGlError()
}
if err := fn(0); err != nil {
return err
}
return fn(1)
}
开发者ID:andrebq,项目名称:exp,代码行数:40,代码来源:commands.go
示例12: initGL
func (video *SDLVideo) initGL() {
if gl.Init() != 0 {
panic(sdl.GetError())
}
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
gl.Enable(gl.CULL_FACE)
gl.Enable(gl.DEPTH_TEST)
video.prog = createProgram(vertShaderSrcDef, fragShaderSrcDef)
posAttrib := video.prog.GetAttribLocation("vPosition")
texCoordAttr := video.prog.GetAttribLocation("vTexCoord")
video.textureUni = video.prog.GetAttribLocation("texture")
video.texture = gl.GenTexture()
gl.ActiveTexture(gl.TEXTURE0)
video.texture.Bind(gl.TEXTURE_2D)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
video.prog.Use()
posAttrib.EnableArray()
texCoordAttr.EnableArray()
vertVBO := gl.GenBuffer()
vertVBO.Bind(gl.ARRAY_BUFFER)
verts := []float32{-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0}
gl.BufferData(gl.ARRAY_BUFFER, len(verts)*int(unsafe.Sizeof(verts[0])), &verts[0], gl.STATIC_DRAW)
textCoorBuf := gl.GenBuffer()
textCoorBuf.Bind(gl.ARRAY_BUFFER)
texVerts := []float32{0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0}
gl.BufferData(gl.ARRAY_BUFFER, len(texVerts)*int(unsafe.Sizeof(texVerts[0])), &texVerts[0], gl.STATIC_DRAW)
posAttrib.AttribPointer(2, gl.FLOAT, false, 0, uintptr(0))
texCoordAttr.AttribPointer(2, gl.FLOAT, false, 0, uintptr(0))
}
开发者ID:nwidger,项目名称:nintengo,代码行数:38,代码来源:sdl_video.go
示例13: allocGeom
func allocGeom(usage Usage, hasIndex bool) *Geometry {
geom := &Geometry{
usage: usage,
}
if hasIndex {
var bufs [2]gl.Buffer
gl.GenBuffers(bufs[:])
geom.VertexBuffer.buf = bufs[0]
geom.IndexBuffer.buf = bufs[1]
} else {
geom.VertexBuffer.buf = gl.GenBuffer()
}
return geom
}
开发者ID:james4k,项目名称:gfx,代码行数:14,代码来源:geometry.go
示例14: NewGlDrawer
func NewGlDrawer(vshader, fshader string) *GlDrawer {
vao := gl.GenVertexArray()
vao.Bind()
vbo := gl.GenBuffer()
vbo.Bind(gl.ARRAY_BUFFER)
ebo := gl.GenBuffer()
ebo.Bind(gl.ELEMENT_ARRAY_BUFFER)
vsh := ShaderFromFile(gl.VERTEX_SHADER, vshader)
fsh := ShaderFromFile(gl.FRAGMENT_SHADER, fshader)
program := glh.NewProgram(vsh, fsh)
program.BindFragDataLocation(0, "outColor")
program.Use()
return &GlDrawer{
program: program,
vao: vao,
vbo: vbo,
ebo: ebo,
}
}
开发者ID:rdterner,项目名称:gosgl,代码行数:24,代码来源:gosgl.go
示例15: newTextVertexBuffer
func newTextVertexBuffer(geometry *TextGeometry) gl.Buffer {
result := []float32{}
vertices := geometry.Vertices
for _, vertex := range vertices {
result = append(result, vertex.X(), vertex.Y())
}
glBuffer := gl.GenBuffer()
glBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(result)*2*4, result, gl.STATIC_DRAW)
return glBuffer
}
开发者ID:nobonobo,项目名称:go-three,代码行数:15,代码来源:text.go
示例16: newNormalBuffer
func newNormalBuffer(geometry Shape) gl.Buffer {
result := []float32{}
normals := geometry.Normals()
for _, face := range geometry.Faces() {
for i := 0; i < 3; i++ {
normal := normals[face.NormalAt(i)]
result = append(result, normal.X(), normal.Y(), normal.Z())
}
}
glBuffer := gl.GenBuffer()
glBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(result)*3*4, result, gl.STATIC_DRAW)
return glBuffer
}
开发者ID:nobonobo,项目名称:go-three,代码行数:18,代码来源:object3d.go
示例17: newUvBuffer
func newUvBuffer(uvs []mgl32.Vec2, compressed bool) gl.Buffer {
result := []float32{}
for _, uv := range uvs {
result = append(result, uv.X(), uv.Y())
}
if compressed {
// Invert V because we're using a compressed texture
for i := 1; i < len(result); i += 2 {
result[i] = 1.0 - result[i]
}
}
glBuffer := gl.GenBuffer()
glBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(result)*2*4, result, gl.STATIC_DRAW)
return glBuffer
}
开发者ID:nobonobo,项目名称:go-three,代码行数:20,代码来源:object3d.go
示例18: main
func main() {
runtime.LockOSThread()
if !glfw.Init() {
fmt.Fprintf(os.Stderr, "Can't open GLFW")
return
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Samples, 4)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True) // needed for macs
window, err := glfw.CreateWindow(1024, 768, "Tutorial 8", nil, nil)
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return
}
window.MakeContextCurrent()
gl.Init()
gl.GetError() // Ignore error
window.SetInputMode(glfw.StickyKeys, 1)
window.SetCursorPosition(1024/2, 768/2)
window.SetInputMode(glfw.Cursor, glfw.CursorHidden)
gl.ClearColor(0., 0., 0.4, 0.)
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.Enable(gl.CULL_FACE)
camera := input.NewCamera(window)
vertexArray := gl.GenVertexArray()
defer vertexArray.Delete()
vertexArray.Bind()
prog := helper.MakeProgram("StandardShading.vertexshader", "StandardShading.fragmentshader")
defer prog.Delete()
matrixID := prog.GetUniformLocation("MVP")
viewMatrixID := prog.GetUniformLocation("V")
modelMatrixID := prog.GetUniformLocation("M")
texture, err := helper.TextureFromDDS("uvmap.DDS")
if err != nil {
fmt.Printf("Could not load texture: %v\n", err)
}
defer texture.Delete()
texSampler := prog.GetUniformLocation("myTextureSampler")
meshObj := objloader.LoadObject("suzanne.obj", true)
indices, indexedVertices, indexedUVs, indexedNormals := indexer.IndexVBOSlow(meshObj.Vertices, meshObj.UVs, meshObj.Normals)
vertexBuffer := gl.GenBuffer()
defer vertexBuffer.Delete()
vertexBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(indexedVertices)*3*4, indexedVertices, gl.STATIC_DRAW)
uvBuffer := gl.GenBuffer()
defer uvBuffer.Delete()
uvBuffer.Bind(gl.ARRAY_BUFFER)
// And yet, the weird length stuff doesn't seem to matter for UV or normal
gl.BufferData(gl.ARRAY_BUFFER, len(indexedUVs)*2*4, indexedUVs, gl.STATIC_DRAW)
normBuffer := gl.GenBuffer()
defer normBuffer.Delete()
normBuffer.Bind(gl.ARRAY_BUFFER)
gl.BufferData(gl.ARRAY_BUFFER, len(indexedNormals)*3*4, indexedNormals, gl.STATIC_DRAW)
elementBuffer := gl.GenBuffer()
defer elementBuffer.Delete()
elementBuffer.Bind(gl.ELEMENT_ARRAY_BUFFER)
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(indices)*2, indices, gl.STATIC_DRAW) // NOTE: a GL_UNSIGNED_SHORT is 16-bits
lightID := prog.GetUniformLocation("LightPosition_worldspace")
lastTime := glfw.GetTime()
nbFrames := 0
// Equivalent to a do... while
for ok := true; ok; ok = (window.GetKey(glfw.KeyEscape) != glfw.Press && !window.ShouldClose()) {
currTime := glfw.GetTime()
nbFrames++
if currTime-lastTime >= 1.0 {
fmt.Printf("%f ms/frame\n", 1000.0/float64(nbFrames))
nbFrames = 0
lastTime += 1.0
}
func() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
prog.Use()
defer gl.ProgramUnuse()
//.........这里部分代码省略.........
开发者ID:krux02,项目名称:mathgl,代码行数:101,代码来源:main.go
示例19: GenBuffer
func GenBuffer() VBO {
return VBO(gl.GenBuffer())
}
开发者ID:gulinfang,项目名称:GarageEngine,代码行数:3,代码来源:Batching.go
示例20: init
// init initializes some of the attribute fields.
// These will be defined by the mesh buffer.
func (a *Attr) init() {
a.vbo = gl.GenBuffer()
}
开发者ID:spacetug,项目名称:raytracer,代码行数:5,代码来源:meshattr.go
注:本文中的github.com/go-gl/gl.GenBuffer函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论