func (w Window) init() error { sdl.GL_SetAttribute(sdl.GL_DOUBLEBUFFER, 1) sdl.GL_SetAttribute(sdl.GL_RED_SIZE, 8) sdl.GL_SetAttribute(sdl.GL_GREEN_SIZE, 8) sdl.GL_SetAttribute(sdl.GL_BLUE_SIZE, 8) sdl.GL_SetAttribute(sdl.GL_ALPHA_SIZE, 8) if err := gl.Init(); err != nil { return errors.New("Cannot initialize OGL: ") } gl.Viewport(0, 0, int32(w.Width), int32(w.Height)) Opengl.CreateBuffers(w.Width, w.Height) return nil }
func setupGL() int32 { gl.Disable(gl.DEPTH_TEST) gl.ClearColor(0.7, 0.7, 0.7, 1) program, _ := loadResources() gl.BindFragDataLocation(program, 0, gl.Str("outputColor\x00")) cameraMatrixUniform := gl.GetUniformLocation(program, gl.Str("cameraMatrix\x00")) octUniform := gl.GetUniformLocation(program, gl.Str("oct\x00")) gl.Uniform1i(octUniform, 0) gl.Viewport(0, 0, winWidth, winHeight) var vao uint32 gl.GenVertexArrays(1, &vao) gl.BindVertexArray(vao) quadVertexBufferData := []float32{ -1, -1, 0, 1, -1, 0, -1, 1, 0, -1, 1, 0, 1, -1, 0, 1, 1, 0, } var vbo uint32 gl.GenBuffers(1, &vbo) gl.BindBuffer(gl.ARRAY_BUFFER, vbo) gl.BufferData(gl.ARRAY_BUFFER, len(quadVertexBufferData)*4, gl.Ptr(quadVertexBufferData), gl.STATIC_DRAW) vertAttrib := uint32(gl.GetAttribLocation(program, gl.Str("inputPosition\x00"))) gl.EnableVertexAttribArray(vertAttrib) gl.VertexAttribPointer(vertAttrib, 3, gl.FLOAT, false, 0, gl.PtrOffset(0)) return cameraMatrixUniform }
// Viewport implements the opengl.OpenGl interface. func (native *OpenGl) Viewport(x int32, y int32, width int32, height int32) { gl.Viewport(x, y, width, height) }