[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz gfx/jni/GzzGL-jni.cxx gfx/libpaper/papermil...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz gfx/jni/GzzGL-jni.cxx gfx/libpaper/papermil... |
Date: |
Mon, 27 Jan 2003 12:26:06 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 03/01/27 12:26:05
Modified files:
gfx/jni : GzzGL-jni.cxx
gfx/libpaper : papermill.py
gfx/librenderables: renderables.py
gzz/gfx/gl : GL.java GLSpanner.java MipzipLoader.java
PageSpanPaper.java pagespanpaper.py
test/gzz/gfx/gl: pagespanpaper.test
Log message:
Now the pagespanpaper tests pass
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/jni/GzzGL-jni.cxx.diff?tr1=1.84&tr2=1.85&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libpaper/papermill.py.diff?tr1=1.69&tr2=1.70&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/librenderables/renderables.py.diff?tr1=1.171&tr2=1.172&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GL.java.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GLSpanner.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/MipzipLoader.java.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/PageSpanPaper.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/pagespanpaper.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/gzz/gfx/gl/pagespanpaper.test.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: gzz/gfx/jni/GzzGL-jni.cxx
diff -u gzz/gfx/jni/GzzGL-jni.cxx:1.84 gzz/gfx/jni/GzzGL-jni.cxx:1.85
--- gzz/gfx/jni/GzzGL-jni.cxx:1.84 Mon Jan 27 09:33:19 2003
+++ gzz/gfx/jni/GzzGL-jni.cxx Mon Jan 27 12:26:03 2003
@@ -495,6 +495,24 @@
GLERR
}
+JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1texImage2D
+ (JNIEnv *env, jclass, jint id, jint level, jstring internalFormat_s,
+ jint w, jint h, jint border, jstring format_s, jstring type_s,
+ jbyteArray jdata) {
+ int internalFormat = tokenFromJstring(env, internalFormat_s);
+ int format = tokenFromJstring(env, format_s);
+ int type = tokenFromJstring(env, type_s);
+ jbyte *data = env->GetByteArrayElements(jdata, 0);
+
+ glBindTexture(GL_TEXTURE_2D, id);
+ glTexImage2D(GL_TEXTURE_2D,
+ level, internalFormat, w, h, border, format, type, data);
+ env->ReleaseByteArrayElements(jdata, data, 0);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ GLERR
+ }
+
+
JNIEXPORT void JNICALL Java_gzz_gfx_gl_GL_impl_1Texture_1loadSubImage
(JNIEnv *env, jclass, jint id, jint level, jint imageId, jint x, jint y,
jint xoffs, jint yoffs, jint w, jint h) {
Index: gzz/gfx/libpaper/papermill.py
diff -u gzz/gfx/libpaper/papermill.py:1.69 gzz/gfx/libpaper/papermill.py:1.70
--- gzz/gfx/libpaper/papermill.py:1.69 Sat Jan 25 09:45:14 2003
+++ gzz/gfx/libpaper/papermill.py Mon Jan 27 12:26:04 2003
@@ -175,7 +175,8 @@
BindTexture TEXTURE_2D 0
""" % locals())
print "READ: ", 0, vs.getSize().height-1-s, s, s
- tex.copyTexImage2D(w.getRenderingSurface(), "FRONT", "TEXTURE_2D", 0,
+ tex.copyTexImage2D(w.getRenderingSurface(),
+ "FRONT", "TEXTURE_2D", 0,
"RGB", 0, vs.getSize().height-1-s,
s, s, 0)
Index: gzz/gfx/librenderables/renderables.py
diff -u gzz/gfx/librenderables/renderables.py:1.171
gzz/gfx/librenderables/renderables.py:1.172
--- gzz/gfx/librenderables/renderables.py:1.171 Sat Jan 25 06:03:21 2003
+++ gzz/gfx/librenderables/renderables.py Mon Jan 27 12:26:04 2003
@@ -798,13 +798,13 @@
}
}
- glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
- glInterleavedArrays(GL_T2F_V3F, 5*sizeof(float), vertices);
- glLockArraysEXT(0, dice*dice*5);
+ if(flags & PAPERQUAD_USE_VERTEX_PROGRAM) {
+ glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
+ glInterleavedArrays(GL_T2F_V3F, 5*sizeof(float), vertices);
+ glLockArraysEXT(0, dice*dice*5);
- for(Paper::Paper::iterator it = paper->begin(); it != paper->end();
++it) {
+ for(Paper::Paper::iterator it = paper->begin(); it !=
paper->end(); ++it) {
- if (flags & PAPERQUAD_USE_VERTEX_PROGRAM) {
DBG(dbg_paperquad) << "Pass\\n";
GLERR
(*it).setUp_VP(&lightParam);
@@ -820,7 +820,12 @@
GLERR
DBG(dbg_paperquad) << "Pass over\\n";
- } else {
+ }
+ glUnlockArraysEXT();
+ glPopClientAttrib();
+ } else {
+ for(Paper::Paper::iterator it = paper->begin(); it !=
paper->end(); ++it) {
+
DBG(dbg_paperquad) << "Pass\\n";
GLERR
(*it).setUp_explicit(&lightParam);
@@ -834,13 +839,18 @@
for(int iy = 0; iy<dice; iy++) {
float tmp[4] = { VERTICES3(ix, iy, 0),
VERTICES3(ix, iy, 1), 0 ,1 };
+ DBG(dbg_paperquad) << "to texcoords\\n";
(*it).texcoords_explicit( tmp );
+ DBG(dbg_paperquad) << "to vertex\\n";
glVertex3fv( (&(VERTICES2(ix, iy))+2) );
float tmp2[4] = { VERTICES3(ix+1, iy, 0),
VERTICES3(ix+1, iy, 1), 0 ,1 };
+ DBG(dbg_paperquad) << "to texcoords\\n";
(*it).texcoords_explicit( tmp2 );
+ DBG(dbg_paperquad) << "to vertex\\n";
glVertex3fv( ((&VERTICES2(ix+1, iy))+2) );
}
+ DBG(dbg_paperquad) << "to end\\n";
glEnd();
}
@@ -854,8 +864,6 @@
}
}
- glUnlockArraysEXT();
- glPopClientAttrib();
DBG(dbg_paperquad) << "Passes over\\n";
GLERR
Index: gzz/gzz/gfx/gl/GL.java
diff -u gzz/gzz/gfx/gl/GL.java:1.46 gzz/gzz/gfx/gl/GL.java:1.47
--- gzz/gzz/gfx/gl/GL.java:1.46 Sun Jan 26 16:25:58 2003
+++ gzz/gzz/gfx/gl/GL.java Mon Jan 27 12:26:04 2003
@@ -460,6 +460,18 @@
border, data);
}
+ /** Call glTexImage2D.
+ * The length of data is used so it needs to be right.
+ */
+ public void texImage2D(int level,
+ String internalFormat, int w, int h,
+ int border, String format, String type,
+ byte[] data) {
+ impl_Texture_texImage2D(getId(),
+ level, internalFormat, w, h, border, format,
+ type, data);
+ }
+
/** Call libtexture to create the image for each mipmap level
separately.
*/
public int shade_all_levels(int w, int h, int d, int comps,
@@ -533,6 +545,9 @@
static private native void impl_Texture_loadNull2D(int id, int level,
String internalFormat, int w, int h,
int border, String format, String type) ;
+ static private native void impl_Texture_texImage2D(int id, int level,
+ String internalFormat, int w, int h,
+ int border, String format, String type, byte[] data) ;
static private native void impl_Texture_loadSubImage(int id,
int level, int imgid, int x, int y, int xoffs, int yoffs, int w, int h)
;
static private native void impl_Texture_downsampleInto(int id, int intoid,
String target,
Index: gzz/gzz/gfx/gl/GLSpanner.java
diff -u gzz/gzz/gfx/gl/GLSpanner.java:1.8 gzz/gzz/gfx/gl/GLSpanner.java:1.9
--- gzz/gzz/gfx/gl/GLSpanner.java:1.8 Mon Jan 27 07:28:00 2003
+++ gzz/gzz/gfx/gl/GLSpanner.java Mon Jan 27 12:26:04 2003
@@ -85,11 +85,16 @@
w = (int)(d.width / resmult);
h = (int)(d.height / resmult);
MipzipLoader l;
+ File f = new File(file +
+ (GL.workaroundStupidBuggyAtiDrivers?
+ ".mipzipBLAH" :
+ ".mipzip"));
try {
- l = new MipzipLoader(new File(file+".mipzip"));
+ l = new MipzipLoader(f);
} catch(IOException e) {
+ e.printStackTrace();
throw new Error("MipzipLoader threw '" + e + "' for " +
- file + ".mipzip");
+ f);
}
Dimension largest = l.getLevelSize(0);
x1 = d.width / (float)largest.width;
Index: gzz/gzz/gfx/gl/MipzipLoader.java
diff -u gzz/gzz/gfx/gl/MipzipLoader.java:1.16
gzz/gzz/gfx/gl/MipzipLoader.java:1.17
--- gzz/gzz/gfx/gl/MipzipLoader.java:1.16 Fri Jan 24 04:09:30 2003
+++ gzz/gzz/gfx/gl/MipzipLoader.java Mon Jan 27 12:26:04 2003
@@ -51,6 +51,7 @@
/** The compressed format.
*/
private final String texFormat;
+ private final boolean compressedFormat;
private int bitsPerTexel;
@@ -139,9 +140,14 @@
pa("TexImage "+MipzipLoader.this+" "+level+
" "+state);
if(state != STATE_DATALOADED) return;
- tex.compressedTexImage(level, texFormat,
- size.width, size.height, 0,
- loadedData);
+ if(compressedFormat)
+ tex.compressedTexImage(level, texFormat,
+ size.width, size.height, 0,
+ loadedData);
+ else
+ tex.texImage2D(level, "RGB", size.width, size.height,
+ 0, texFormat, "BYTE", loadedData);
+
state = STATE_INTEXTURE;
loadedData = null;
AbstractUpdateManager.doWhenIdle( r_runGL, priority);
@@ -430,6 +436,7 @@
ZipEntry e = f.getEntry("texformat");
if(e == null) throw new IOException("Invalid format: no texformat
in mipzip");
this.texFormat = e.getComment();
+ this.compressedFormat = texFormat.indexOf("COMPRESS") != -1;
ArrayList l = new ArrayList();
for(int i=0; i<100; i++) {
e = f.getEntry(""+i);
Index: gzz/gzz/gfx/gl/PageSpanPaper.java
diff -u gzz/gzz/gfx/gl/PageSpanPaper.java:1.2
gzz/gzz/gfx/gl/PageSpanPaper.java:1.3
--- gzz/gzz/gfx/gl/PageSpanPaper.java:1.2 Mon Jan 27 09:33:19 2003
+++ gzz/gzz/gfx/gl/PageSpanPaper.java Mon Jan 27 12:26:04 2003
@@ -90,8 +90,11 @@
Paper.Pass pass = bgPaper.getPass(0);
pass.setNTexGens(2);
pass.putNormalTexGen(1, getTexgen());
- pass.setSetupcode(setupDualPass + getBindTexture(1));
- pass.setTeardowncode(teardown);
+ pass.setSetupcode(
+ pass.getSetupcode() +
+ setupDualPass + getBindTexture(1));
+ pass.setTeardowncode(teardown +
+ pass.getTeardowncode());
} else {
// We don't have an optimized paper;
Index: gzz/gzz/gfx/gl/pagespanpaper.py
diff -u gzz/gzz/gfx/gl/pagespanpaper.py:1.1 gzz/gzz/gfx/gl/pagespanpaper.py:1.2
--- gzz/gzz/gfx/gl/pagespanpaper.py:1.1 Mon Jan 27 09:43:05 2003
+++ gzz/gzz/gfx/gl/pagespanpaper.py Mon Jan 27 12:26:04 2003
@@ -1,31 +1,34 @@
from gzz.gfx.gl import PageSpanPaper
+# The filters for pagespanpaper, really clunky
+# to write in java.
+
PageSpanPaper.filter = """
- Enable TEXTURE_2D
- TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
- TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
- TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
+ Enable TEXTURE_2D
+ TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
+ TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
+ TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
"""
PageSpanPaper.setupOnlyPass = """
- PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
- TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
- Disable BLEND
+ PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+ TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+ Disable BLEND
"""
PageSpanPaper.setupExtraPass = """
- PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
- TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
- Enable BLEND
- BlendFunc ZERO SRC_COLOR
+ PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+ TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+ Enable BLEND
+ BlendFunc ZERO SRC_COLOR
"""
PageSpanPaper.setupDualPass = """
- PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
- ActiveTexture TEXTURE0
- Enable TEXTURE_2D
- TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
- Disable BLEND
- ActiveTexture TEXTURE1
- TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
+ PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+ ActiveTexture TEXTURE0
+ Enable TEXTURE_2D
+ TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+ Disable BLEND
+ ActiveTexture TEXTURE1
+ TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
"""
PageSpanPaper.teardown = """
PopAttrib
Index: gzz/test/gzz/gfx/gl/pagespanpaper.test
diff -u gzz/test/gzz/gfx/gl/pagespanpaper.test:1.3
gzz/test/gzz/gfx/gl/pagespanpaper.test:1.4
--- gzz/test/gzz/gfx/gl/pagespanpaper.test:1.3 Mon Jan 27 09:33:19 2003
+++ gzz/test/gzz/gfx/gl/pagespanpaper.test Mon Jan 27 12:26:05 2003
@@ -21,12 +21,20 @@
"""
failUnlessEqual(sc.getCurrent().length(), 2)
+
+def excinfo():
+ global exc
+ typ, val, tra = sys.exc_info()
+ print (repr((typ, val)))
+ print str(val)
+ exc = "\n".join(traceback.format_list(traceback.extract_tb(tra)))
+
def checkColors():
try:
# Check that the green rectangle is there
- checkAvgColor(160,150,50,50, (0, 255, 0))
+ checkAvgColor(160,150,50,50, (0, 255, 0), delta=110)
# Check that the red rectangle is there
- checkAvgColor(260,150,50,50, (255, 0, 0))
+ checkAvgColor(260,150,50,50, (255, 0, 0), delta=110)
# Check that the black rectangle is there
checkAvgColor(150,225,20,50, (0, 0, 0))
checkAvgColor(330,225,20,50, (0, 0, 0))
@@ -35,25 +43,22 @@
checkAvgColor(45, 0, 2, 500, (255, 255, 0))
checkAvgColor(453, 0, 2, 500, (255, 255, 0))
except:
- return 0
- # Let these run to print out the errors
- typ, val, tra = sys.exc_info()
- print (repr((typ, val)))
- print str(val)
- l = traceback.format_list(traceback.extract_tb(tra))
- print "\n".join(l)
+ excinfo()
return 0
return 1
-def testNobg():
- """Test that the image gets loaded correctly from GLSpanner.
+def checkNonBlank():
+ checkNotAvgColor(100, 100, 3, 20, (255, 255, 255))
- """
+def checkBlank():
+ checkAvgColor(100, 100, 3, 20, (255, 255, 255))
+
+def checkPaper(bgpaper, blank):
pagespan = GLSpanner.getSpanRect(sc.getCurrent()).page
- p = PageSpanPaper(None, pagespan)
+ p = PageSpanPaper(bgpaper, pagespan)
- pap = p.getPaper(0)
+ pap = p.getPaper(not blank)
vs = getvs()
vs.map.put(SolidBgVob(Color.yellow))
@@ -69,11 +74,43 @@
render(vs)
# check the rendered image's color
- if checkColors(): return
+ if checkColors():
+ if blank:
+ checkBlank()
+ else:
+ checkNonBlank()
+ return
Thread.sleep(100)
+
+
+ failUnlessEqual("didn't get the image " + exc, 0, 1)
+
+
+def testPaperLoading():
+ """Test that the image gets loaded correctly from GLSpanner.
+
+ """
+ checkPaper(None, 1)
+
+def testUnoptimized():
+ """Test that rendering the paper on top of fancy unoptimized
+ paper works.
+
+ """
+
+ checkPaper(PaperMill.getInstance().getPaper(42), 1)
+ checkPaper(PaperMill.getInstance().getPaper(42), 0)
+
+def testOptimized():
+ """Test that rendering the paper on top of fancy optimized
+ paper works.
+
+ """
+
+ checkPaper(PaperMill.getInstance().getOptimizedPaper(43, win), 1)
+ checkPaper(PaperMill.getInstance().getOptimizedPaper(43, win), 0)
- failUnlessEqual("didn't get the image", 0, 1)
# : vim: set syntax=python :
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz gfx/jni/GzzGL-jni.cxx gfx/libpaper/papermil...,
Tuomas J. Lukka <=