package render import ( "unsafe" "github.com/go-gl/gl/all-core/gl" ) var ( screenQuadVerts = []float32{ -1, -1, 0, 0, 1, -1, 1, 0, 1, 1, 1, 1, -1, -1, 0, 0, 1, 1, 1, 1, -1, 1, 0, 1, } screenQuadVAO uint32 screenQuadVBO uint32 ) func initScreenQuad() { gl.GenBuffers(1, &screenQuadVBO) gl.BindBuffer(gl.ARRAY_BUFFER, screenQuadVBO) gl.BufferData(gl.ARRAY_BUFFER, int(unsafe.Sizeof(float32(0)))*len(screenQuadVerts), gl.Ptr(screenQuadVerts), gl.STATIC_DRAW) gl.GenVertexArrays(1, &screenQuadVAO) gl.BindVertexArray(screenQuadVAO) gl.VertexAttribPointer(0, 2, gl.FLOAT, false, int32(4*unsafe.Sizeof(float32(0))), gl.PtrOffset(0)) gl.VertexAttribPointer(1, 2, gl.FLOAT, false, int32(4*unsafe.Sizeof(float32(0))), gl.PtrOffset(int(2*unsafe.Sizeof(float32(0))))) gl.EnableVertexAttribArray(0) gl.EnableVertexAttribArray(1) } // drawScreenQuad draws a Quad covering the entire screen. // // Attribute: vert: [ -1.0 --> 1.0] func (r *WorldRenderer) drawScreenQuad() { if screenQuadVAO == 0 { initScreenQuad() } gl.Disable(gl.DEPTH_TEST) gl.Disable(gl.CULL_FACE) gl.BindVertexArray(screenQuadVAO) gl.DrawArrays(gl.TRIANGLES, 0, 6) }