Пример #1
0
// Pre: n < MaxL, 0 <= h[i] <= 1 für i = 0, 1.
// Wenn Licht n schon eingeschaltet war, ist nichts verändert; andernfalls ist es
// an der Position v in Farbe f mit der Ambienz h[0] und der Diffusität h[1] eingeschaltet.
func InitLight(n uint, v, h *vect.Imp, c col.Colour) {
	//
	//
	if lightInitialized[n] {
		return
	}
	var a [4]float64
	a[0], a[1], a[2] = h.Coord3()
	// Arbeitsdrumrum, weil die Punkte bisher nur eine Farbe transportieren, hier die diffuse.
	// In L wird die ambiente Farbe geliefert.
	for i := 0; i < 3; i++ {
		aa[n][i] = C.GLfloat(a[i])
	}
	aa[n][3] = C.GLfloat(1.0)
	lightColour[n] = c
	d0, d1, d2 := col.Float(c)
	dd[n][0], dd[n][1], dd[n][2] = C.GLfloat(d0), C.GLfloat(d1), C.GLfloat(d2)
	dd[n][3] = C.GLfloat(1.0)
	lightSource[n].Copy(v)
	ActualizeLight(n)
	lightInitialized[n] = true
}
Пример #2
0
func Cls(c col.Colour) {
	//
	r, g, b := col.Float(c) // 0.0, 0.0, 0.0
	C.glClearColor(C.GLclampf(r), C.GLclampf(g), C.GLclampf(b), C.GLclampf(0.0))
}