[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] libvob ./rules.mk include/vob/Renderer.hxx incl...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] libvob ./rules.mk include/vob/Renderer.hxx incl... |
Date: |
Sat, 19 Apr 2003 15:37:33 -0400 |
CVSROOT: /cvsroot/libvob
Module name: libvob
Changes by: Tuomas J. Lukka <address@hidden> 03/04/19 15:37:33
Modified files:
. : rules.mk
include/vob : Renderer.hxx Vob.hxx
include/vob/irregu: Irregu.hxx
include/vob/jni: Generate.hxx
include/vob/vobs: Irregu.hxx
src/jni : Generator.cxx Generator.hxx Render.cxx
src/main : Renderer.cxx
Log message:
More debug info for irregu - dumping core somewhere
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/rules.mk.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/Renderer.hxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/Vob.hxx.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/irregu/Irregu.hxx.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/jni/Generate.hxx.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/vobs/Irregu.hxx.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Generator.cxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Generator.hxx.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/jni/Render.cxx.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/src/main/Renderer.cxx.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
Patches:
Index: libvob/include/vob/Renderer.hxx
diff -u libvob/include/vob/Renderer.hxx:1.1 libvob/include/vob/Renderer.hxx:1.2
--- libvob/include/vob/Renderer.hxx:1.1 Wed Mar 12 08:37:57 2003
+++ libvob/include/vob/Renderer.hxx Sat Apr 19 15:37:32 2003
@@ -59,57 +59,7 @@
ObjectStorer<Vob0> &r0s,
ObjectStorer<Vob1> &r1s,
ObjectStorer<Vob2> &r2s,
- ObjectStorer<Vob> &r3s) {
- int i=0;
- DBG(dbg_renderer) << "renderScene\n";
- while(codes[i] != 0) {
- DBG(dbg_renderer) << "Rendercode "<<i<<" "<<codes[i]<<"\n";
- // cout << "Code: "<<codes[i]<<"\n";
- int code = codes[i] & ~RMASK;
- if((codes[i] & RMASK) == RENDERABLE0) {
- DBG(dbg_renderer) << "rend0 "<<r0s[code]<<"\n";
- r0s[code]->render0();
- i += 1;
- }
- else if((codes[i] & RMASK) == RENDERABLE1) {
- Transform *cs1 = coordset.get(codes[i+1]);
- DBG(dbg_renderer) << "rend1 "<<r1s[code]<<": "<<codes[i+1]<<"
"<<cs1<<"\n";
- if(cs1)
- r1s[code]->render1(*cs1);
- i += 2;
- }
- else if((codes[i] & RMASK) == RENDERABLE2) {
- Transform *cs1 = coordset.get(codes[i+1]);
- Transform *cs2 = coordset.get(codes[i+2]);
- DBG(dbg_renderer) << "rend2 "<<r2s[code]<<": "
- <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" "<<cs2<<"\n";
- if(cs1 && cs2)
- r2s[code]->render2(*cs1, *cs2);
- i += 3;
- }
- else if((codes[i] & RMASK) == RENDERABLE3) {
- Transform *cs1 = coordset.get(codes[i+1]);
- Transform *cs2 = coordset.get(codes[i+2]);
- Transform *cs3 = coordset.get(codes[i+3]);
- DBG(dbg_renderer) << "rend3 "<<r3s[code]<<": "
- <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<"
"<<cs2<<" "
- <<cs3<<" "<<codes[i+3]<<"\n";
- /* XXX
- if(cs1 && cs2 && cs3)
- r3s[code]->render(*cs1, *cs2, *cs3);
- */
- i += 4;
- }
- else {
- // We have a problem
- cout << "HELP!\n";
- std::cerr << "We seem to have a problem!!! "<<codes[i]<<"\n";
- cout << "HELP!\n";
- exit(19);
- }
- }
- DBG(dbg_renderer) << "renderScene end\n";
- }
+ ObjectStorer<Vob> &r3s) ;
};
Index: libvob/include/vob/Vob.hxx
diff -u libvob/include/vob/Vob.hxx:1.7 libvob/include/vob/Vob.hxx:1.8
--- libvob/include/vob/Vob.hxx:1.7 Sun Mar 23 15:15:58 2003
+++ libvob/include/vob/Vob.hxx Sat Apr 19 15:37:32 2003
@@ -49,6 +49,8 @@
* @param n The number of transforms in t.
*/
virtual void render(const Transform **t, int n) const = 0;
+
+ virtual const char* getVobName() const = 0;
};
/** A vob which uses no coordinate systems. A specialization
@@ -92,9 +94,11 @@
* actual Vob interface.
*/
template<class VobSeed> class Vob0Maker : public Vob0, public VobSeed {
+ static char* name;
virtual void render0() const {
VobSeed::render();
}
+ virtual const char* getVobName() const { return name; }
};
/** A template class which implements Vob, given a class with a render(t)
method.
@@ -102,9 +106,11 @@
* actual Vob interface.
*/
template<class VobSeed> class Vob1Maker : public Vob1, public VobSeed {
+ static char* name;
virtual void render1(const Transform &t) const {
VobSeed::render(t);
}
+ virtual const char* getVobName() const { return name; }
};
/** A template class which implements Vob, given a class with a render(t0,
t1) method.
@@ -112,9 +118,11 @@
* actual Vob interface.
*/
template<class VobSeed> class Vob2Maker : public Vob2, public VobSeed {
+ static char* name;
virtual void render2(const Transform &t0, const Transform &t1) const {
VobSeed::render(t0, t1);
}
+ virtual const char* getVobName() const { return name; }
};
}
Index: libvob/include/vob/irregu/Irregu.hxx
diff -u libvob/include/vob/irregu/Irregu.hxx:1.2
libvob/include/vob/irregu/Irregu.hxx:1.3
--- libvob/include/vob/irregu/Irregu.hxx:1.2 Wed Apr 9 10:47:28 2003
+++ libvob/include/vob/irregu/Irregu.hxx Sat Apr 19 15:37:32 2003
@@ -35,6 +35,8 @@
// XXX: name
namespace Irregu {
+PREDBGVAR(dbg_irregu);
+
inline void setDotVec(float angle, int angles, float dotvec[]) {
float a = (angle + M_PI) * angles * (1 / M_PI);
int ind = (int)a;
@@ -182,6 +184,8 @@
const float c0[], const float c1[],
int angles, int multi,
unsigned flags) {
+
+ DBG(dbg_irregu) << "Irregu draw "<<pt.size() <<" "<<norm.size()<<"\n";
if (pt.size() < 2) return;
@@ -207,6 +211,7 @@
}
if (flags & INSIDE) {
+ DBG(dbg_irregu) << "Inside\n";
colorfv(c0);
glBegin(GL_POLYGON);
for (unsigned i = 0; i < pt.size(); i++) {
@@ -219,6 +224,7 @@
}
if ((flags & SLICE_2D) && !(flags & SLICE_1D)) {
+ DBG(dbg_irregu) << "Slice2D\n";
glBegin(GL_QUAD_STRIP);
for (unsigned i = 0; i < pt.size(); i++) {
@@ -244,8 +250,10 @@
}
if (flags & SLICE_1D) {
+ DBG(dbg_irregu) << "Slice1D\n";
glBegin(GL_QUADS);
for (unsigned i = 0, j = 1; j < pt.size(); i++, j++) {
+ DBG(dbg_irregu) << "Slice1D loop "<<i<<" "<<j<<"\n";
ZVec dv0 = vert[i][0] - vert[j][0];
ZVec dv1 = vert[i][1] - vert[j][1];
@@ -257,6 +265,7 @@
float scale0=0, scale1=0;
if (multi > 0 || (flags & SHIFTS+SHIFTS8)) {
+ DBG(dbg_irregu) << "Slice1D loop opt1\n";
dv0t = vert2[j][0] - vert2[i][0];
dv1t = vert2[j][1] - vert2[i][1];
@@ -293,6 +302,8 @@
if (flags & SHIFTS8) numshifts = 8;
for (int s = 0; s < numshifts; s++) {
if (flags & SHIFTS+SHIFTS8) {
+ DBG(dbg_irregu) << "Slice1D loop opt2 "<<
+ s<<"\n";
switch (s) {
case 0: shift0 = scale1 * dv0t.normalized().cw90(); break;
case 1: shift0 = scale1 * dv1t.normalized(); break;
@@ -306,7 +317,10 @@
shift1 = shift0;
}
+ DBG(dbg_irregu) << "Slice1D loop pos 3 \n";
+
if (flags & DOTVEC_COLOR) {
+ DBG(dbg_irregu) << "Slice1D loop opt3 \n";
float angle = flags & INTERP_DOTVEC ?
atan2(-norm[i].x, norm[i].y) :
atan2(pt[j].y - pt[i].y,
@@ -343,6 +357,7 @@
vertex(vert2[i][0] + shift0);
if ((flags & DOTVEC_COLOR) && (flags & INTERP_DOTVEC)) {
+ DBG(dbg_irregu) << "Slice1D loop opt4 \n";
float angle = atan2(-norm[j].x, norm[j].y);
float dotvec[4] = {0,0,0,0};
setDotVec(angle, angles, dotvec);
Index: libvob/include/vob/jni/Generate.hxx
diff -u libvob/include/vob/jni/Generate.hxx:1.19
libvob/include/vob/jni/Generate.hxx:1.20
--- libvob/include/vob/jni/Generate.hxx:1.19 Fri Apr 4 07:34:59 2003
+++ libvob/include/vob/jni/Generate.hxx Sat Apr 19 15:37:32 2003
@@ -158,6 +158,7 @@
VOB_JNISTREAM << "\n struct " << structName << " { "
<< pl.jniStructS<< "\n} ;\n\n";
+ VOB_JNICXXSTREAM << "\n char *"<<makerName<<"::name =
\""<<name<<"\";\n";
VOB_JNISTREAM << "JNIEXPORT jint JNICALL "<<
VOB_JAVAPREFIX<<"implcreate"<<name<<
Index: libvob/include/vob/vobs/Irregu.hxx
diff -u libvob/include/vob/vobs/Irregu.hxx:1.3
libvob/include/vob/vobs/Irregu.hxx:1.4
--- libvob/include/vob/vobs/Irregu.hxx:1.3 Wed Apr 9 09:33:36 2003
+++ libvob/include/vob/vobs/Irregu.hxx Sat Apr 19 15:37:32 2003
@@ -320,10 +320,12 @@
}
template<class T> void render(const T &coords1, const T &coords2) const {
- DBG(dbg_irregularquad) << "IrregularEdge\\n";
+ DBG(dbg_irregularquad) << "IrregularEdge\n";
// XXX: TODO: use coords1.nonlinearity()
int n = (int)(36 * dicefactor);
+
+ DBG(dbg_irregularquad) << "Reserve "<<n<<"\n";
std::vector<ZPt> vert(n+1);
switch (shape) {
@@ -336,9 +338,12 @@
n = 2 + shape;
default:
case 0:
+ DBG(dbg_irregularquad) << "GetEllipse "<<n<<"\n";
+
vert = Irregu::getEllipse(n, 2, 2);
break;
case 7: {
+ DBG(dbg_irregularquad) << "Quad\n";
n = 4;
vert[0] = ZPt(+1, -1, 0);
vert[1] = ZPt(+1, +1, 0);
@@ -354,24 +359,29 @@
float yw = (coords2.transform(ZPt(0,1,0)) -
coords2.transform(ZPt(0,0,0))).length();
float poww = 2 + (shape - 8) * 3;
+ DBG(dbg_irregularquad) << "GetEllipse type2 "<<n<<" "<<poww<<"\n";
vert = Irregu::getEllipse(n, poww * pow(xw/120, 0.2), poww *
pow(yw/120, 0.2));
}
break;
}
+ DBG(dbg_irregularquad) << "Resize "<<(n+1)<<"\n";
vert.resize(n + 1);
vert[n] = vert[0];
for (unsigned int i=0; i<vert.size(); i++) {
vert[i].x = 0.5*(vert[i].x+1);
vert[i].y = 0.5*(vert[i].y+1);
}
+ DBG(dbg_irregularquad) << "trans\n";
Irregu::transform(coords2, vert);
+ DBG(dbg_irregularquad) << "transed\n";
glCallList(setup);
GLERR;
// XXX: Kluge for 2D offset texture
if (flags & 65536) {
+ DBG(dbg_irregularquad) << "offs\n";
float xw = (coords2.transform(ZPt(1,0,0)) -
coords2.transform(ZPt(0,0,0))).length();
float yw = (coords2.transform(ZPt(0,1,0)) -
coords2.transform(ZPt(0,0,0))).length();
@@ -426,12 +436,15 @@
GLERR;
} else {
+ DBG(dbg_irregularquad) << "norms\n";
std::vector<ZVec> norm = Irregu::computeNorms(vert, n);
+ DBG(dbg_irregularquad) << "normed\n";
Irregu::draw(coords1, vert, norm, texscale,
linewidth, refsize, scale_pow,
border0, border1, texslicing,
&const0[0], &const1[0],
angles, multi, flags);
+ DBG(dbg_irregularquad) << "drew\n";
GLERR;
}
Index: libvob/rules.mk
diff -u libvob/rules.mk:1.11 libvob/rules.mk:1.12
--- libvob/rules.mk:1.11 Wed Apr 16 05:27:44 2003
+++ libvob/rules.mk Sat Apr 19 15:37:32 2003
@@ -12,7 +12,9 @@
-e 's/^flags.* sse .*$$/-mfpmath=sse/'
ARCH=$(shell [ ! -f /proc/cpuinfo ] || sed $(ARCHOPTS) -e "/^-/!d"
/proc/cpuinfo)
-OPTIMIZE = -O3 -ffast-math $(ARCH) -fomit-frame-pointer
-foptimize-sibling-calls
+# OPTIMIZE = -O3 -ffast-math $(ARCH) -fomit-frame-pointer
-foptimize-sibling-calls
+# Better not omit frame pointer: java can sometimes show us where the problem
is...
+OPTIMIZE = -O3 -ffast-math $(ARCH) -foptimize-sibling-calls
# OPTIMIZE = -O0
CPPFLAGS = -I../include -I../../libvob-depends -I../../include $(EXTRAINCLUDE)
-I../../callgl/include -I../../../callgl/include
-I../../callgl/include/glwrapper -I../../../callgl/include/glwrapper
-I../../glmosaictext/include -I../../../glmosaictext/include
-I/usr/include/freetype2 `gdk-pixbuf-config --cflags`
Index: libvob/src/jni/Generator.cxx
diff -u libvob/src/jni/Generator.cxx:1.1 libvob/src/jni/Generator.cxx:1.2
--- libvob/src/jni/Generator.cxx:1.1 Fri Apr 4 07:34:59 2003
+++ libvob/src/jni/Generator.cxx Sat Apr 19 15:37:32 2003
@@ -6,6 +6,7 @@
static Generator gen(S(C_OUTPUT_FILE), S(HEADER_FILE));
#define VOB_JNISTREAM ::gen.JNISTREAM
+#define VOB_JNICXXSTREAM ::gen.JNICXXSTREAM
#define VOB_JAVASTREAM ::gen.JAVASTREAM
#define VOB_TRANSJAVASTREAM ::gen.TRANSJAVASTREAM
Index: libvob/src/jni/Generator.hxx
diff -u libvob/src/jni/Generator.hxx:1.1 libvob/src/jni/Generator.hxx:1.2
--- libvob/src/jni/Generator.hxx:1.1 Fri Apr 4 07:34:59 2003
+++ libvob/src/jni/Generator.hxx Sat Apr 19 15:37:32 2003
@@ -20,6 +20,7 @@
class Generator {
public:
std::ostringstream JNISTREAM;
+ std::ostringstream JNICXXSTREAM;
std::ostringstream JAVASTREAM;
std::ostringstream TRANSJAVASTREAM;
@@ -49,6 +50,8 @@
jni << "using namespace Vob::Primitives;\n";
jni << "using namespace Vob; using namespace Vob::Vobs; \n";
jni << "extern HierarchicalTransform *((*transFactories[])());\n";
+
+ jni << JNICXXSTREAM.str()<<"\n\n";
jni << "extern \"C\" { \n";
jni << JNISTREAM.str()<<"\n\n";
Index: libvob/src/jni/Render.cxx
diff -u libvob/src/jni/Render.cxx:1.3 libvob/src/jni/Render.cxx:1.4
--- libvob/src/jni/Render.cxx:1.3 Fri Mar 21 04:42:51 2003
+++ libvob/src/jni/Render.cxx Sat Apr 19 15:37:32 2003
@@ -114,6 +114,7 @@
env->ReleaseFloatArrayElements(j_pts1, pts1, JNI_ABORT);
if(inds2 != 0) {
+ DBG(dbg_render) << "Releasearrays: "<<j_inds2<<" "<<j_pts2<<"
"<<j_interpinds<<"\n";
env->ReleaseIntArrayElements(j_inds2, inds2, JNI_ABORT);
env->ReleaseFloatArrayElements(j_pts2, pts2, JNI_ABORT);
env->ReleaseIntArrayElements(j_interpinds, interpinds, JNI_ABORT);
Index: libvob/src/main/Renderer.cxx
diff -u libvob/src/main/Renderer.cxx:1.4 libvob/src/main/Renderer.cxx:1.5
--- libvob/src/main/Renderer.cxx:1.4 Tue Apr 1 06:03:54 2003
+++ libvob/src/main/Renderer.cxx Sat Apr 19 15:37:33 2003
@@ -27,6 +27,10 @@
DBGVAR(dbg_paperquad, "Paperquad");
}
+ namespace Irregu {
+ DBGVAR(dbg_irregu, "Irregu");
+ }
+
namespace CurrentFPS {
// bool showFPS;
double current_fps;
@@ -60,20 +64,76 @@
}
+void Renderer::renderScene(int *codes,
+ ObjectStorer<Vob0> &r0s,
+ ObjectStorer<Vob1> &r1s,
+ ObjectStorer<Vob2> &r2s,
+ ObjectStorer<Vob> &r3s) {
+ int i=0;
+ DBG(dbg_renderer) << "renderScene\n";
+ while(codes[i] != 0) {
+ DBG(dbg_renderer) << "Rendercode "<<i<<" "<<codes[i]<<"\n";
+ // cout << "Code: "<<codes[i]<<"\n";
+ int code = codes[i] & ~RMASK;
+ if((codes[i] & RMASK) == RENDERABLE0) {
+ DBG(dbg_renderer) << "rend0 "<<r0s[code]->getVobName()<<"
"<<r0s[code]<<"\n";
+ r0s[code]->render0();
+ i += 1;
+ }
+ else if((codes[i] & RMASK) == RENDERABLE1) {
+ Transform *cs1 = coordset.get(codes[i+1]);
+ DBG(dbg_renderer) << "rend1 "<<r1s[code]->getVobName()<<"
"<<r1s[code]<<": "<<codes[i+1]<<" "<<cs1<<"\n";
+ if(cs1)
+ r1s[code]->render1(*cs1);
+ i += 2;
+ }
+ else if((codes[i] & RMASK) == RENDERABLE2) {
+ Transform *cs1 = coordset.get(codes[i+1]);
+ Transform *cs2 = coordset.get(codes[i+2]);
+ DBG(dbg_renderer) << "rend2 "<<r2s[code]->getVobName()<<"
"<<r2s[code]<<": "
+ <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<" "<<cs2<<"\n";
+ if(cs1 && cs2)
+ r2s[code]->render2(*cs1, *cs2);
+ i += 3;
+ }
+ else if((codes[i] & RMASK) == RENDERABLE3) {
+ Transform *cs1 = coordset.get(codes[i+1]);
+ Transform *cs2 = coordset.get(codes[i+2]);
+ Transform *cs3 = coordset.get(codes[i+3]);
+ DBG(dbg_renderer) << "rend3 "<<r3s[code]->getVobName()<<"
"<<r3s[code]<<": "
+ <<codes[i+1]<<" "<<cs1<<" "<<codes[i+2]<<"
"<<cs2<<" "
+ <<cs3<<" "<<codes[i+3]<<"\n";
+ /* XXX
+ if(cs1 && cs2 && cs3)
+ r3s[code]->render(*cs1, *cs2, *cs3);
+ */
+ i += 4;
+ }
+ else {
+ // We have a problem
+ cout << "HELP!\n";
+ std::cerr << "We seem to have a problem!!! "<<codes[i]<<"\n";
+ cout << "HELP!\n";
+ exit(19);
+ }
+ }
+ DBG(dbg_renderer) << "renderScene end\n";
+}
+
void Renderer::fpsTick() {
- if(dbg_fps) {
- double new_time = getTime();
- CurrentFPS::current_fps = 1.0/(new_time -
CurrentFPS::last_time[CurrentFPS::count]);
- DBG(dbg_fps_cout) << "CurrentFPS: " << CurrentFPS::current_fps << "\n";
- CurrentFPS::count ++;
- CurrentFPS::count %= CurrentFPS::NCounts;
- CurrentFPS::current_fps5 = CurrentFPS::NCounts *
- 1.0/(new_time -
CurrentFPS::last_time[CurrentFPS::count]);
- CurrentFPS::last_time[CurrentFPS::count] = new_time;
+ if(dbg_fps) {
+ double new_time = getTime();
+ CurrentFPS::current_fps = 1.0/(new_time -
CurrentFPS::last_time[CurrentFPS::count]);
+ DBG(dbg_fps_cout) << "CurrentFPS: " << CurrentFPS::current_fps << "\n";
+ CurrentFPS::count ++;
+ CurrentFPS::count %= CurrentFPS::NCounts;
+ CurrentFPS::current_fps5 = CurrentFPS::NCounts *
+ 1.0/(new_time -
CurrentFPS::last_time[CurrentFPS::count]);
+ CurrentFPS::last_time[CurrentFPS::count] = new_time;
- }
+ }
}
-
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] libvob ./rules.mk include/vob/Renderer.hxx incl...,
Tuomas J. Lukka <=