Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
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())