def getOptimizedPaper(self, seed, passmask=[1, 1, 1, 1, 1, 1, 1], numcolors=8, minlum=80, blend=0): pap = self.getPaper(seed, passmask, numcolors, minlum, blend) if not GL.hasExtension("GL_SGIS_generate_mipmap"): print "Warning: not returning optimized paper because" print "GL_SGIS_generate_mipmap extension is required but not available" return pap if GL.workaroundStupidBuggyAtiDrivers: print "Warning: not returning optimized paper because" print "copyTexImage2D has problems on ATI drivers" return pap # Now, we render a region. v = pap.repeat._getSTVectors() vs = optimizingWindow.createVobScene() vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.red)) cs1 = vs.coords.ortho(0, 0, 0, 0, optimizedPaperSize + 1, optimizedPaperSize + 1) cs2 = vs.coords.affine(0, 0, 0, 0, v[0][0], v[0][1], v[1][0], v[1][1]) vs.map.put(GLRen.createPaperQuad(pap, 0, 0, 1, 1, 1), cs1, cs2) optimizingWindow.renderStill(vs, 1) tex = GL.createTexture() texid = tex.getTexId() GL.call(""" BindTexture TEXTURE_2D %(texid)s TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 2 TexParameter TEXTURE_2D GENERATE_MIPMAP_SGIS TRUE TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR BindTexture TEXTURE_2D 0 """ % locals()) tex.copyTexImage2D(optimizingWindow.getRenderingSurface(), "FRONT", "TEXTURE_2D", 0, "RGB5", 0, 0, optimizedPaperSize, optimizedPaperSize, 0) # Apparently, NV drivers 44.96 (maybe others) have some trouble # with the 1x1 mipmap getting clobbered. # Usually, that wouldn't be a problem, but papers will be viewed # 1) at largely different scales # 2) blurred for text background # so this matters. # We shall forbid the use of that mipmap tex.setTexParameter("TEXTURE_2D", "TEXTURE_MAX_LEVEL", optimizedPaperMaxLevel) if dbg: vob.putil.texture.printTex(tex.getTexId()) npap = PaperHanger() npap.setNPasses(1) npap.cachedTexture = tex npap.addDepend(tex) # Need this for clones to survive ppass = npap.getPass(0) ppass.setSetupcode(""" PushAttrib ENABLE_BIT TEXTURE_BIT DEPTH_BUFFER_BIT COLOR_BUFFER_BIT CURRENT_BIT Disable BLEND ActiveTexture TEXTURE1 Disable TEXTURE_2D ActiveTexture TEXTURE0 Enable DEPTH_TEST DepthFunc LESS BindTexture TEXTURE_2D %(texid)s TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE Color 0 1 0 Enable TEXTURE_2D SecondaryColorEXT 0 0 0 """ % locals()) ppass.setNTexGens(1) # t = pap.repeat.vecs t = v if dbg: print "T ", t ppass.putNormalTexGen(0, [ t[0][0], t[0][1], 0, 0, -t[1][0], -t[1][1], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]) ppass.setTeardowncode(""" PopAttrib ActiveTexture TEXTURE0 """) if dbg: print "Ret: ", npap.toString(), npap.getPass(0).getNTexGens() return npap
def key(self, k): if 0: pass elif k == "Up": self.x1 += .2 * cos(self.a1) self.y1 += .2 * sin(self.a1) elif k == "Down": self.x1 -= .2 * cos(self.a1) self.y1 -= .2 * sin(self.a1) elif k == "Left": self.a1 -= .1 elif k == "Right": self.a1 += .1 elif k == "x": self.xs += .1 elif k == "X": self.xs -= .1 elif k == "y": self.ys += .1 elif k == "Y": self.ys -= .1 elif k == "+": self.scale += .1 elif k == "-": self.scale -= .1 elif k == "c": if self.combiners == "Enable": self.combiners = "Disable" else: self.combiners = "Enable" self.initirregu() elif k == "w": self.w += .1 self.initirregu() elif k == "W": self.w -= .1 self.initirregu() elif k == "h": self.h += .1 self.initirregu() elif k == "H": self.h -= .1 self.initirregu() elif k == "b": self.border += .01 self.initirregu() elif k == "B": self.border -= .01 self.initirregu() elif k == "p": self.period += .1 self.initirregu() elif k == "P": self.period -= .1 self.initirregu() elif "1" <= k <= "9": self.mode ^= 1 << (int(k) - 1) print "mode=", [(".", "X")[(self.mode >> i) & 1] for i in range(0, 9)] elif k == "t": if self.type == "square": self.type = "ellipse" else: self.type = "square" self.initirregu() elif k == "d": self.distort = not self.distort elif k == "l": GL.call(""" PolygonMode FRONT_AND_BACK LINE """) elif k == "L": GL.call(""" PolygonMode FRONT_AND_BACK FILL """) pass
GL.call(""" BindTexture TEXTURE_2D %s TexImage2D TEXTURE_2D 0 ALPHA 16 16 0 ALPHA \ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 \ 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \ 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 \ 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 \ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ TexImage2D TEXTURE_2D 1 ALPHA 8 8 0 ALPHA \ 1 1 1 1 1 1 1 1 \ 1 1 1 1 1 1 1 1 \ 1 1 1 0 0 0 1 1 \ 1 1 0 0 0 0 0 1 \ 1 1 0 0 0 0 0 1 \ 1 1 0 0 0 0 0 1 \ 1 1 1 0 0 0 1 1 \ 1 1 1 1 1 1 1 1 TexImage2D TEXTURE_2D 2 ALPHA 4 4 0 ALPHA \ 1 1 1 1 \ 1 1 1 1 \ 1 1 0 1 \ 1 1 1 1 TexImage2D TEXTURE_2D 3 ALPHA 2 2 0 ALPHA \ 1 1 \ 1 1 TexParameter TEXTURE_2D TEXTURE_BASE_LEVEL 0 TexParameter TEXTURE_2D TEXTURE_MAX_LEVEL 3 TexParameter TEXTURE_2D TEXTURE_WRAP_S REPEAT TexParameter TEXTURE_2D TEXTURE_WRAP_T REPEAT TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR TexParameter TEXTURE_2D TEXTURE_LOD_BIAS -1.25 BindTexture TEXTURE_2D 0 """ % tex.getTexId())