def glZBuffer(self, filename): archivo = open(filename, 'wb') # File header 14 bytes archivo.write(bytes('B'.encode('ascii'))) archivo.write(bytes('M'.encode('ascii'))) archivo.write(dword(14 + 40 + self.width * self.height * 3)) archivo.write(dword(0)) archivo.write(dword(14 + 40)) # Image Header 40 bytes archivo.write(dword(40)) archivo.write(dword(self.width)) archivo.write(dword(self.height)) archivo.write(word(1)) archivo.write(word(24)) archivo.write(dword(0)) archivo.write(dword(self.width * self.height * 3)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) # Minimo y el maximo minZ = float('inf') maxZ = -float('inf') for x in range(self.height): for y in range(self.width): if self.zbuffer[x][y] != -float('inf'): if self.zbuffer[x][y] < minZ: minZ = self.zbuffer[x][y] if self.zbuffer[x][y] > maxZ: maxZ = self.zbuffer[x][y] for x in range(self.height): for y in range(self.width): depth = self.zbuffer[x][y] if depth == -float('inf'): depth = minZ depth = (depth - minZ) / (maxZ - minZ) archivo.write(color(depth,depth,depth)) archivo.close()
def glFinish(self, filename): archivo = open(filename, 'wb') # File header 14 bytes archivo.write(bytes('B'.encode('ascii'))) archivo.write(bytes('M'.encode('ascii'))) archivo.write(dword(14 + 40 + self.width * self.height * 3)) archivo.write(dword(0)) archivo.write(dword(14 + 40)) # Image Header 40 bytes archivo.write(dword(40)) archivo.write(dword(self.width)) archivo.write(dword(self.height)) archivo.write(word(1)) archivo.write(word(24)) archivo.write(dword(0)) archivo.write(dword(self.width * self.height * 3)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) # Pixeles, 3 bytes cada uno for x in range(self.height): for y in range(self.width): archivo.write(self.pixels[x][y]) archivo.close()
def glFinish(self, filename): archivo = open(filename, 'wb') # File header 14 bytes archivo.write(char("B")) archivo.write(char("M")) archivo.write(dword(14+40+self.width*self.height)) archivo.write(dword(0)) archivo.write(dword(14+40)) # Image Header 40 bytes archivo.write(dword(40)) archivo.write(dword(self.width)) archivo.write(dword(self.height)) archivo.write(word(1)) archivo.write(word(24)) archivo.write(dword(0)) archivo.write(dword(self.width * self.height * 3)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) archivo.write(dword(0)) # Pixeles, 3 bytes cada uno for x in range(self.height): for y in range(self.width): archivo.write(self.framebuffer[x][y]) # Close file archivo.close()