Exemple #1
0
 def render(self):
     p = self.position
     a = self.material.ambient_rgb
     d = self.material.diffuse_rgb
     s = self.material.specular_rgb
     id = gl.GL_LIGHT0 + self.id
     gl.glEnable(gl.GL_LIGHTING)
     gl.glEnable(id)
     gl.glLightfv(id, gl.GL_POSITION, raw(p[0], p[1], p[2], 1.0))
     gl.glLightfv(id, gl.GL_AMBIENT, raw(a[0], a[1], a[2], 1.0))
     gl.glLightfv(id, gl.GL_DIFFUSE, raw(d[0], d[1], d[2], 1.0))
     gl.glLightfv(id, gl.GL_SPECULAR, raw(s[0], s[1], s[2], 1.0))
Exemple #2
0
 def chain(self):
     gl.glPushMatrix()
     p = self.position
     r = self.rotation
     gl.glMultMatrixf(
         raw(
             r[0][0],
             r[1][0],
             r[2][0],
             0.0,
             r[0][1],
             r[1][1],
             r[2][1],
             0.0,
             r[0][2],
             r[1][2],
             r[2][2],
             0.0,
             p[0],
             p[1],
             p[2],
             1.0,
         )
     )
     self.material.apply()
     self.render()
     self.material.unapply()
     for c in self.children:
         c.chain()
     gl.glPopMatrix()
Exemple #3
0
 def apply(self):
     gl.glEnable(gl.GL_LIGHTING)
     for s in self.shaders:
         s.bind()
     for i, t in enumerate(self.textures):
         gl.glActiveTexture(gl.GL_TEXTURE0 + i)
         gl.glEnable(gl.GL_TEXTURE_2D)
         gl.glBindTexture(gl.GL_TEXTURE_2D, t.id)
         self.parameters["tex[%u]" % i] = i
     for k in self.parameters.keys():
         if type(self.parameters[k]) == type(0):
             for s in self.shaders:
                 s.uniformi(k, self.parameters[k])
         if type(self.parameters[k]) == type(0.0):
             for s in self.shaders:
                 s.uniformf(k, self.parameters[k])
     a = self.ambient_rgb
     d = self.diffuse_rgb
     s = self.specular_rgb
     gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_AMBIENT, raw(a[0], a[1], a[2], 1.0))
     gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_DIFFUSE, raw(d[0], d[1], d[2], 1.0))
     gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_SPECULAR, raw(s[0], s[1], s[2], 1.0))
     gl.glMaterialf(gl.GL_FRONT_AND_BACK, gl.GL_SHININESS, self.shininess)