1 |
#(c): Tuomas J. Lukka |
#(c): Tuomas J. Lukka |
2 |
|
|
3 |
# A GL animation framework |
# A GL animation framework |
4 |
|
# |
5 |
|
# To be run as main, with cmd-line param |
6 |
|
|
7 |
from __future__ import nested_scopes |
from __future__ import nested_scopes |
8 |
|
|
9 |
import sys |
import sys |
10 |
from java.lang import System,Runnable |
from java.lang import System,Runnable |
11 |
from gzz.client import AbstractBinder, AbstractShower, AbstractUpdateManager, GraphicsAPI, Screen |
from gzz.client import AbstractBinder, AbstractShower, AbstractUpdateManager, GraphicsAPI, Screen |
12 |
|
from gzz.gfx.gl import GL, GLRen |
13 |
from gfx.util import reload as reloadmod |
from gfx.util import reload as reloadmod |
14 |
|
from gfx.util import misc |
15 |
import gzz |
import gzz |
16 |
import getopt |
import getopt |
17 |
import traceback |
import traceback |
18 |
|
|
19 |
|
animSize = (400, 300) |
20 |
|
|
21 |
System.setProperty("gzzclient", "gl") |
System.setProperty("gzzclient", "gl") |
22 |
|
|
23 |
print "ARGV:",sys.argv |
print "ARGV:",sys.argv |
80 |
if 1: |
if 1: |
81 |
reloadmod.reloadModules() |
reloadmod.reloadModules() |
82 |
dict = {} |
dict = {} |
83 |
dict["film"] = Film(w) |
dict["film"] = Film(rs) |
84 |
try: |
try: |
85 |
exec open(animfile) in dict, dict |
exec open(animfile) in dict, dict |
86 |
print dict |
print dict |
105 |
AbstractUpdateManager.chg() |
AbstractUpdateManager.chg() |
106 |
class Show(AbstractShower): |
class Show(AbstractShower): |
107 |
def generate(self): |
def generate(self): |
108 |
film.renderFrame(w, frameno) |
film.renderFrame(rs, frameno) |
109 |
|
print "1" |
110 |
|
rsbuf.readFromBuffer(rs.getRenderingSurface(), |
111 |
|
"FRONT", 0, 0, animSize[0], animSize[1], |
112 |
|
"RGB", "UNSIGNED_BYTE") |
113 |
|
print "2" |
114 |
|
vs = w.createVobScene() |
115 |
|
vs.map.put(misc.background((0, 0, 0.2))) |
116 |
|
cs = vs.translateCS(0, "tr", 300, 300) # 0, animSize[1]-1) |
117 |
|
vs.map.put( |
118 |
|
misc.getDListNocoords(""" |
119 |
|
Color 1 1 1 1 |
120 |
|
""") |
121 |
|
) |
122 |
|
vs.map.put( |
123 |
|
GLRen.createDrawPixels( |
124 |
|
animSize[0], animSize[1], |
125 |
|
"RGB", "UNSIGNED_BYTE", rsbuf), |
126 |
|
cs) |
127 |
|
# rsbuf.drawPixels(w.getRenderingSurface(), |
128 |
|
# 0, 0, 0, animSize[0], animSize[1], |
129 |
|
# "RGB", "UNSIGNED_BYTE") |
130 |
|
print "3" |
131 |
|
return vs |
132 |
|
|
133 |
class Main(Runnable): |
class Main(Runnable): |
134 |
def run(self): |
def run(self): |
135 |
b,s = (Bindings(), Show()) |
b,s = (Bindings(), Show()) |
136 |
global w |
global w |
137 |
global rs |
global rs, rsbuf |
138 |
w = gfxapi.createWindow() |
w = gfxapi.createWindow() |
139 |
w.setLocation(0,0,1024,768) |
w.setLocation(0,0,800,600) |
140 |
|
if 1: |
141 |
|
rs = gfxapi.createStableOffscreen(*animSize) |
142 |
|
else: |
143 |
|
rs = gfxapi.createWindow() |
144 |
|
rs.setLocation(0,600,animSize[0],animSize[1]) |
145 |
|
rsbuf = GL.createByteVector(animSize[0] * animSize[1] * 3) |
146 |
loadAnim() |
loadAnim() |
147 |
scr = Screen(w, b, s) |
scr = Screen(w, b, s) |
148 |
AbstractUpdateManager.addWindow(scr) |
AbstractUpdateManager.addWindow(scr) |