[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/gfx librenderables/renderables.py libcallgl...
From: |
Janne V. Kujala |
Subject: |
[Gzz-commits] gzz/gfx librenderables/renderables.py libcallgl... |
Date: |
Mon, 04 Nov 2002 03:29:39 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Janne V. Kujala <address@hidden> 02/11/04 03:29:37
Modified files:
gfx/librenderables: renderables.py
gfx/libcallgl : callgl.cxx
Added files:
gfx/demo : irreguellipse.py
Log message:
Start IrregularEllipse renderable
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/librenderables/renderables.py.diff?tr1=1.126&tr2=1.127&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libcallgl/callgl.cxx.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/irreguellipse.py?rev=1.1
Patches:
Index: gzz/gfx/libcallgl/callgl.cxx
diff -u gzz/gfx/libcallgl/callgl.cxx:1.33 gzz/gfx/libcallgl/callgl.cxx:1.34
--- gzz/gfx/libcallgl/callgl.cxx:1.33 Fri Nov 1 14:13:45 2002
+++ gzz/gfx/libcallgl/callgl.cxx Mon Nov 4 03:29:35 2002
@@ -720,7 +720,8 @@
<< getTokenString(TARGET)
<< " program\n";
-#ifdef GL_PROGRAM_ERROR_STRING_ARB // XXX: how to test support?
+#if 0 // XXX: disabled until we have glwrapper support
+//#ifdef GL_PROGRAM_ERROR_STRING_ARB // XXX: how to test support?
glBindProgramARB(TARGET, id);
glProgramStringARB(TARGET, GL_PROGRAM_FORMAT_ASCII_ARB,
source.length(), (GLubyte*)source.data());
Index: gzz/gfx/librenderables/renderables.py
diff -u gzz/gfx/librenderables/renderables.py:1.126
gzz/gfx/librenderables/renderables.py:1.127
--- gzz/gfx/librenderables/renderables.py:1.126 Sun Nov 3 13:28:16 2002
+++ gzz/gfx/librenderables/renderables.py Mon Nov 4 03:29:35 2002
@@ -1116,6 +1116,82 @@
""",
} ,
+# coords1: paper => window
+# coords2: frame => paper (assumed to be affine)
+#
+# texscale is paper-texture scaling
+# ripple_scale is the amplitude-period scale of the texture
+{
+ "Type" : "2",
+ "Name": "IrregularEllipse",
+ "Data": """float texscale; float ripple_scale; int mode; CallGLCode setup;
+ float dicefactor;""",
+ "Params" : """
+ float texscale, float ripple_scale, int mode, String setupcode,
+ float dicefactor
+ """,
+ "ParamCode" : """
+ this->texscale = texscale;
+ this->ripple_scale = ripple_scale;
+ this->mode = mode;
+ setup = CallGLCode(string(setupcode.begin(),
setupcode.end()).c_str());
+ this->dicefactor = dicefactor;
+ """,
+ "RenderCode" : """
+ DBG(dbg) << "IrregularEllipse\\n";
+
+ int n = 20;
+ std::vector<ZPt> vert(n+1);
+ std::vector<ZVec> norm(n+1);
+
+ for (int i = 0; i <= n; i++) {
+ float a = i * 2*M_PI / n;
+ vert[i] = coords2.transform(ZPt(cos(a), sin(a), 0));
+ }
+
+ int angles = 3;
+
+ setup();
+
+ glBegin(GL_QUAD_STRIP);
+ for (int i = 0; i <= n; i++) {
+ ZPt p = vert[i];
+ ZVec norm = (vert[(i+1) % n] - vert[(i+n-1) %
n]).cw90().normalize();
+ norm *= 0.5 * ripple_scale * texscale;
+
+
+ float dotvec[4] = {0,0,0,0};
+ float angle = atan2(-norm.x, norm.y); // angle(norm.cw90())
+
+ float a = (angle + M_PI) * angles * (1 / M_PI);
+ int ind = (int)a;
+ float f = a - (int)a;
+
+ dotvec[ind % angles] = 1 - f;
+ dotvec[(ind + 1) % angles] = f;
+
+ if (mode)
+ glColor4fv(dotvec);
+ else
+ glColor4f(0, 0, 0, 1);
+
+ // XXX: need to compute multiplier according to
+ // quad inside/outside length difference
+ glTexCoord4f(p.x, p.y, p.z, texscale);
+ glSecondaryColor3fEXT(1,1,1);
+ coords1.vertex(p - norm);
+ glSecondaryColor3fEXT(0,0,0);
+ coords1.vertex(p + norm);
+ }
+ glEnd();
+
+ glPopAttrib();
+
+ DBG(dbg) << "IrregularEllipse done\\n";
+
+ """,
+} ,
+
{
"Type": "2",
"Name": "CalendarPaper",
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz/gfx librenderables/renderables.py libcallgl...,
Janne V. Kujala <=