func onPaint(sz size.Event) { gl.ClearColor(rgb(156), rgb(39), rgb(176), 1) gl.Clear(gl.COLOR_BUFFER_BIT) var rotationMatrix = []float32{ f32.Cos(-alpha), -f32.Sin(-alpha), 0.0, f32.Sin(-alpha), f32.Cos(-alpha), 0.0, 0.0, 0.0, 1.0, } gl.UseProgram(program) // setting color gl.Uniform4f(color, rgb(255), rgb(255), rgb(255), 1) gl.UniformMatrix3fv(matrixId, rotationMatrix) gl.Uniform1f(resolutionId, resIndex) gl.BindBuffer(gl.ARRAY_BUFFER, swasBuffer) gl.EnableVertexAttribArray(position) gl.VertexAttribPointer(position, 3, gl.FLOAT, false, 0, 0) gl.DrawArrays(gl.LINES, 0, 16) gl.DisableVertexAttribArray(position) gl.UseProgram(texProgram) // setting color gl.Uniform4f(color2, rgb(130), rgb(50), rgb(80), 1) gl.Uniform1f(resolutionId2, resIndex) gl.UniformMatrix3fv(matrixId2, rotationMatrix) gl.BindBuffer(gl.ARRAY_BUFFER, quadBuffer) gl.EnableVertexAttribArray(position2) gl.VertexAttribPointer(position2, 3, gl.FLOAT, false, 0, 0) gl.BindBuffer(gl.ARRAY_BUFFER, quadTexBuffer) gl.EnableVertexAttribArray(textureCoords) gl.VertexAttribPointer(textureCoords, 2, gl.FLOAT, false, 0, 0) gl.Uniform1i(gl.GetUniformLocation(texProgram, "myTexture"), 0) gl.ActiveTexture(gl.TEXTURE0) gl.BindTexture(gl.TEXTURE_2D, textureId) gl.DrawArrays(gl.TRIANGLES, 0, 6) gl.DisableVertexAttribArray(position2) gl.DisableVertexAttribArray(textureCoords) if spin == true { alpha += 0.1 } if alpha >= 360 { alpha = 0.0 } }
func (shape *arena) Draw(camera Camera) { shader := shape.shader gl.Uniform3fv(shader.Uniform("material.ambient"), []float32{0.05, 0.0, 0.02}) gl.Uniform3fv(shader.Uniform("lights[0].color"), []float32{0.2, 0.1, 0.1}) gl.Uniform1f(shader.Uniform("lights[0].intensity"), 0.3) // TODO: Move this into a texture gl.Uniform1f(shader.Uniform("lights[1].intensity"), 25.0) gl.Uniform3fv(shader.Uniform("lights[1].position"), []float32{0, 20, 0}) gl.Uniform3fv(shader.Uniform("lights[1].color"), []float32{0.05, 0.0, 0.1}) shape.Node.Draw(camera) }
func (shape *Line) Draw(camera Camera) { shader := shape.shader // Set uniforms gl.Uniform1f(shader.Uniform("lights[0].intensity"), 2.0) gl.Uniform3fv(shader.Uniform("lights[0].position"), shape.position[:]) gl.Uniform3fv(shader.Uniform("lights[0].color"), []float32{0.4, 0.2, 0.1}) gl.Uniform3fv(shader.Uniform("material.ambient"), []float32{0.1, 0.15, 0.4}) //gl.Uniform3fv(shader.Uniform("material.diffuse"), []float32{0.8, 0.6, 0.6}) //gl.Uniform3fv(shader.Uniform("material.specular"), []float32{1.0, 1.0, 1.0}) //gl.Uniform1f(shader.Uniform("material.shininess"), 16.0) //gl.Uniform1f(shader.Uniform("material.refraction"), 1.0/1.52) gl.BindBuffer(gl.ARRAY_BUFFER, shape.VBO) stride := shape.Stride() gl.EnableVertexAttribArray(shader.Attrib("vertCoord")) gl.VertexAttribPointer(shader.Attrib("vertCoord"), vertexDim, gl.FLOAT, false, stride, 0) gl.DrawArrays(gl.TRIANGLE_STRIP, 0, shape.Len()) }