[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire/spanimages/gl PlainPaperMak...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] fenfire/org/fenfire/spanimages/gl PlainPaperMak... |
Date: |
Wed, 25 Jun 2003 04:01:29 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Tuomas J. Lukka <address@hidden> 03/06/25 04:01:29
Modified files:
org/fenfire/spanimages/gl: PlainPaperMaker.java
Added files:
org/fenfire/spanimages/gl: papermakers.py
Log message:
Porting papermaker functions from earlier versions
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/papermakers.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java
diff -u fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java:1.4
fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java:1.5
--- fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java:1.4 Mon Jun 23
09:22:47 2003
+++ fenfire/org/fenfire/spanimages/gl/PlainPaperMaker.java Wed Jun 25
04:01:28 2003
@@ -43,12 +43,18 @@
Object depends;
+ PaperMill papermill;
+ GraphicsAPI.RenderingSurface w;
+
/** Create a new PlainPaperMaker that just copies the texture value
* to the screen.
+ * This does not put in the proper filtering - it's better
+ * to use org.fenfire.spanimages.gl.papermakers for these.
*/
public PlainPaperMaker() {
this(1, "PushAttrib TEXTURE_BIT\nTexEnv TEXTURE_ENV TEXTURE_ENV_MODE
REPLACE\n", "PopAttrib\n", null);
}
+
/** Create a new PlainPaperMaker.
* @param n The number of texunits to put the given texture into.
* @param setup The setup code.
@@ -64,32 +70,66 @@
this.depends = depends;
}
+ /** Create a new PlainPaperMaker.
+ * @param n The number of texunits to put the given texture into.
+ * @param setup The setup code.
+ * @param teardown The teardown code
+ * @param depends The objects that mustn't be reclaimed by the GC
+ * before the papers.
+ * @param papermill The papermill to use to make the optimized background
paper
+ */
+ public PlainPaperMaker(int n, String setup, String teardown,
+ Object depends, PaperMill papermill,
+ GraphicsAPI.RenderingSurface w) {
+ this.n = n;
+ this.setup = setup;
+ this.teardown = teardown;
+ this.depends = depends;
+ this.papermill = papermill;
+ this.w = w;
+ }
+
public Paper makePaper(SingleImage img, float[] texgen) {
- Paper p = new Paper();
+ Paper p;
+ Paper.Pass pass;
+ int offs = 0;
+ StringBuffer buf = new StringBuffer();
+ if(papermill != null) {
+ p = papermill.getOptimizedPaper(img.scrollBlock.hashCode());
+ if(p.getNPasses() != 1)
+ throw new Error("Invalid paper gotten back");
+ pass = p.getPass(0);
+ if(pass.getNTexGens() != 1)
+ throw new Error("Invalid paper gotten back");
+ offs = 1;
+ buf.append(pass.getSetupcode());
+ } else {
+ p = new Paper();
+ p.setNPasses(1);
+ pass = p.getPass(0);
+ }
if(depends != null)
p.addDepend(depends);
p.addDepend(img.loader.getTexture());
- p.setNPasses(1);
- Paper.Pass pass = p.getPass(0);
- StringBuffer buf = new StringBuffer();
+
buf.append(setup);
pass.setNTexGens(n);
for(int i=0; i<n ; i++) {
buf.append("\nActiveTexture TEXTURE");
- buf.append(i);
+ buf.append(i + offs);
buf.append("\nBindTexture TEXTURE_2D ");
buf.append(img.loader.getTexture().getTexId());
buf.append("\n");
- pass.putNormalTexGen(i, texgen);
+ pass.putNormalTexGen(i + 1, texgen);
}
buf.append("\nActiveTexture TEXTURE0\n");
pass.setSetupcode(buf.toString());
- pass.setTeardowncode(teardown);
+ pass.setTeardowncode(teardown + pass.getTeardowncode());
return p;
}