Loading scenes/icosahedron/icosahedron.go +87 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import ( "repositories.muehmer.net/bsmrgo/saola/support/scene" gi "repositories.muehmer.net/bsmrgo/geometry/icosahedron" shader "repositories.muehmer.net/bsmrgo/saola/support/shader" ) const ( Loading @@ -29,10 +30,43 @@ func Hooks() scene.HooksType { return hooks } // VAO_IDs const ( Trianges = iota NumVAOs ) // Buffer_IDs const ( ArrayBuffer = iota NumBuffers ) // Attrib_IDs const ( vPosition = 0 NumVertices = 6 ) // Buffers var ( //VAOs [NumVAOs]uint32 //Buffers [NumBuffers]uint32 VAOs []uint32 Buffers []uint32 ) func init() { VAOs = make([]uint32, NumVAOs) Buffers = make([]uint32, NumBuffers) } // Initialize the environment. func initialize() { fmt.Fprintf(os.Stderr, "[%s] Initialize()\n", sceneName) var err error ico, err := gi.Create() if err != nil { panic(err) Loading @@ -44,6 +78,49 @@ func initialize() { for i, icoFace := range ico.Faces() { fmt.Printf("f[%d] = %v\n", i, icoFace) } pvaos := &VAOs[0] gl.GenVertexArrays(NumVAOs, pvaos) gl.BindVertexArray(VAOs[Trianges]) vertices := [NumVertices][2]float32{ {-0.90, -0.90}, {0.85, -0.90}, {-0.90, 0.85}, {0.90, -0.85}, {0.90, 0.90}, {-0.85, 0.90}, } abp := &Buffers[ArrayBuffer] gl.GenBuffers(NumBuffers, abp) gl.BindBuffer(gl.ARRAY_BUFFER, Buffers[ArrayBuffer]) vp := &vertices[0][0] gl.BufferData(gl.ARRAY_BUFFER, len(vertices), gl.Ptr(vp), gl.STATIC_DRAW) //gl.CreateBuffers(NumBuffers, (*uint32)(gl.Ptr(&Buffers[0]))) //gl.CreateBuffers(NumBuffers, (*uint32)(gl.Ptr(&Buffers[ArrayBuffer]))) //abp := &Buffers[ArrayBuffer] //gl.CreateBuffers(NumBuffers, abp) //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), gl.Ptr(&vertices[0][0]), 0) //vp := &vertices[0][0] //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), gl.Ptr(vp), 0) //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), vp, 0) // load shaders basepath := "/home/MUEHMER/bsmr/go/src/repositories.muehmer.net/bsmrgo/graphics-playground/scenes/icosahedron/shaders/" fis := shader.FileInfos{ {Type: gl.VERTEX_SHADER, Filename: basepath + "vertex.glsl"}, {Type: gl.FRAGMENT_SHADER, Filename: basepath + "fragment.glsl"}, } program, err := shader.LoadShadersFromFile(fis) if err != nil { panic(err) } gl.UseProgram(program) gl.VertexAttribPointer(vPosition, 2, gl.FLOAT, false, 0, gl.PtrOffset(0)) gl.EnableVertexAttribArray(vPosition) } // Resize changes the view. Loading @@ -51,9 +128,18 @@ func resize(width, height int) { fmt.Fprintf(os.Stderr, "[%s] Resize(%d, %d)\n", sceneName, width, height) } var ( black = []float32{0.0, 0.0, 0.0, 0.0} ) // Render something. func render() { gl.Clear(gl.COLOR_BUFFER_BIT) //gl.Clear(gl.COLOR_BUFFER_BIT) //gl.ClearBufferfv(gl.COLOR, 0, (*float32)(gl.Ptr(&black[0]))) bp := &black[0] gl.ClearBufferfv(gl.COLOR, 0, bp) gl.BindVertexArray(VAOs[Trianges]) gl.DrawArrays(gl.TRIANGLES, 0, NumVertices) } func keyCallback(w *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) { Loading scenes/icosahedron/shaders/fragment.glsl 0 → 100644 +8 −0 Original line number Diff line number Diff line #version 430 core out vec4 fColor; void main() { fColor = vec4(0.0, 0.0, 1.0, 1.0); } scenes/icosahedron/shaders/vertex.glsl 0 → 100644 +8 −0 Original line number Diff line number Diff line #version 430 core layout (location = 0) in vec4 vPosition; void main() { gl_Position = vPosition; } Loading
scenes/icosahedron/icosahedron.go +87 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import ( "repositories.muehmer.net/bsmrgo/saola/support/scene" gi "repositories.muehmer.net/bsmrgo/geometry/icosahedron" shader "repositories.muehmer.net/bsmrgo/saola/support/shader" ) const ( Loading @@ -29,10 +30,43 @@ func Hooks() scene.HooksType { return hooks } // VAO_IDs const ( Trianges = iota NumVAOs ) // Buffer_IDs const ( ArrayBuffer = iota NumBuffers ) // Attrib_IDs const ( vPosition = 0 NumVertices = 6 ) // Buffers var ( //VAOs [NumVAOs]uint32 //Buffers [NumBuffers]uint32 VAOs []uint32 Buffers []uint32 ) func init() { VAOs = make([]uint32, NumVAOs) Buffers = make([]uint32, NumBuffers) } // Initialize the environment. func initialize() { fmt.Fprintf(os.Stderr, "[%s] Initialize()\n", sceneName) var err error ico, err := gi.Create() if err != nil { panic(err) Loading @@ -44,6 +78,49 @@ func initialize() { for i, icoFace := range ico.Faces() { fmt.Printf("f[%d] = %v\n", i, icoFace) } pvaos := &VAOs[0] gl.GenVertexArrays(NumVAOs, pvaos) gl.BindVertexArray(VAOs[Trianges]) vertices := [NumVertices][2]float32{ {-0.90, -0.90}, {0.85, -0.90}, {-0.90, 0.85}, {0.90, -0.85}, {0.90, 0.90}, {-0.85, 0.90}, } abp := &Buffers[ArrayBuffer] gl.GenBuffers(NumBuffers, abp) gl.BindBuffer(gl.ARRAY_BUFFER, Buffers[ArrayBuffer]) vp := &vertices[0][0] gl.BufferData(gl.ARRAY_BUFFER, len(vertices), gl.Ptr(vp), gl.STATIC_DRAW) //gl.CreateBuffers(NumBuffers, (*uint32)(gl.Ptr(&Buffers[0]))) //gl.CreateBuffers(NumBuffers, (*uint32)(gl.Ptr(&Buffers[ArrayBuffer]))) //abp := &Buffers[ArrayBuffer] //gl.CreateBuffers(NumBuffers, abp) //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), gl.Ptr(&vertices[0][0]), 0) //vp := &vertices[0][0] //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), gl.Ptr(vp), 0) //gl.NamedBufferStorage(Buffers[ArrayBuffer], len(vertices), vp, 0) // load shaders basepath := "/home/MUEHMER/bsmr/go/src/repositories.muehmer.net/bsmrgo/graphics-playground/scenes/icosahedron/shaders/" fis := shader.FileInfos{ {Type: gl.VERTEX_SHADER, Filename: basepath + "vertex.glsl"}, {Type: gl.FRAGMENT_SHADER, Filename: basepath + "fragment.glsl"}, } program, err := shader.LoadShadersFromFile(fis) if err != nil { panic(err) } gl.UseProgram(program) gl.VertexAttribPointer(vPosition, 2, gl.FLOAT, false, 0, gl.PtrOffset(0)) gl.EnableVertexAttribArray(vPosition) } // Resize changes the view. Loading @@ -51,9 +128,18 @@ func resize(width, height int) { fmt.Fprintf(os.Stderr, "[%s] Resize(%d, %d)\n", sceneName, width, height) } var ( black = []float32{0.0, 0.0, 0.0, 0.0} ) // Render something. func render() { gl.Clear(gl.COLOR_BUFFER_BIT) //gl.Clear(gl.COLOR_BUFFER_BIT) //gl.ClearBufferfv(gl.COLOR, 0, (*float32)(gl.Ptr(&black[0]))) bp := &black[0] gl.ClearBufferfv(gl.COLOR, 0, bp) gl.BindVertexArray(VAOs[Trianges]) gl.DrawArrays(gl.TRIANGLES, 0, NumVertices) } func keyCallback(w *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) { Loading
scenes/icosahedron/shaders/fragment.glsl 0 → 100644 +8 −0 Original line number Diff line number Diff line #version 430 core out vec4 fColor; void main() { fColor = vec4(0.0, 0.0, 1.0, 1.0); }
scenes/icosahedron/shaders/vertex.glsl 0 → 100644 +8 −0 Original line number Diff line number Diff line #version 430 core layout (location = 0) in vec4 vPosition; void main() { gl_Position = vPosition; }