Revision b2939df4
Added by Leszek Koltunski almost 8 years ago
src/main/java/org/distorted/library/DistortedNode.java | ||
---|---|---|
238 | 238 |
DistortedEffects.blitPriv(mData.mFBO); |
239 | 239 |
} |
240 | 240 |
|
241 |
// 'renderChildren' |
|
242 |
for(int i=0; i<mNumChildren[0]; i++) |
|
243 |
{ |
|
244 |
numRenders += mChildren.get(i).draw(currTime,mData.mFBO); |
|
245 |
} |
|
241 |
numRenders += mData.mFBO.renderChildren(currTime,mNumChildren[0],mChildren); |
|
246 | 242 |
} |
247 | 243 |
|
248 | 244 |
return numRenders; |
249 | 245 |
} |
250 | 246 |
|
251 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
252 |
// return the total number of render calls issued |
|
253 |
|
|
254 |
int drawRecursive(long currTime, DistortedOutputSurface surface) |
|
255 |
{ |
|
256 |
int ret = 0; |
|
257 |
|
|
258 |
if( mNumChildren[0]>0 && mData.currTime!=currTime ) |
|
259 |
{ |
|
260 |
mData.currTime = currTime; |
|
261 |
mData.mFBO.setAsOutput(); |
|
262 |
|
|
263 |
GLES30.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); |
|
264 |
GLES30.glClear( GLES30.GL_DEPTH_BUFFER_BIT | GLES30.GL_COLOR_BUFFER_BIT); |
|
265 |
|
|
266 |
if( mSurface.setAsInput() ) |
|
267 |
{ |
|
268 |
ret++; |
|
269 |
DistortedEffects.blitPriv(mData.mFBO); |
|
270 |
} |
|
271 |
|
|
272 |
for(int i=0; i<mNumChildren[0]; i++) |
|
273 |
{ |
|
274 |
ret += mChildren.get(i).drawRecursive(currTime, mData.mFBO); |
|
275 |
} |
|
276 |
} |
|
277 |
|
|
278 |
DistortedInputSurface input = mNumChildren[0]==0 ? mSurface : mData.mFBO; |
|
279 |
|
|
280 |
if( input.setAsInput() ) |
|
281 |
{ |
|
282 |
ret++; |
|
283 |
mState.apply(); |
|
284 |
mEffects.drawPriv(mSurface.getWidth()/2.0f, mSurface.getHeight()/2.0f, mMesh, surface, currTime); |
|
285 |
} |
|
286 |
|
|
287 |
return ret; |
|
288 |
} |
|
289 |
|
|
290 | 247 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
291 | 248 |
// PUBLIC API |
292 | 249 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/library/DistortedOutputSurface.java | ||
---|---|---|
101 | 101 |
} |
102 | 102 |
|
103 | 103 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
104 |
// PUBLIC API |
|
105 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
106 |
/** |
|
107 |
* Draws all the attached children to this OutputSurface. |
|
108 |
* <p> |
|
109 |
* Must be called from a thread holding OpenGL Context. |
|
110 |
* |
|
111 |
* @param time Current time, in milliseconds. This will be passed to all the Effects stored in the children Nodes. |
|
112 |
* @return Number of objects rendered. |
|
113 |
*/ |
|
114 |
public int render(long time) |
|
115 |
{ |
|
116 |
DistortedAttachDaemon.toDo(); |
|
117 |
toDo(); |
|
118 |
DistortedRenderState.reset(); |
|
119 |
|
|
120 |
int numRenders=0; |
|
121 | 104 |
|
122 |
for(int i=0; i<mNumChildren; i++) |
|
123 |
{ |
|
124 |
numRenders += mChildren.get(i).renderRecursive(time); |
|
125 |
} |
|
126 |
|
|
127 |
setAsOutput(); |
|
105 |
int renderChildren(long time, int num, ArrayList<DistortedNode> children) |
|
106 |
{ |
|
107 |
int numRenders = 0; |
|
128 | 108 |
|
129 |
// 'renderChildren' |
|
130 |
for(int i=0; i<mNumChildren; i++) |
|
109 |
for(int i=0; i<num; i++) |
|
131 | 110 |
{ |
132 |
numRenders += mChildren.get(i).draw(time,this);
|
|
111 |
numRenders += children.get(i).draw(time,this);
|
|
133 | 112 |
} |
134 | 113 |
|
135 | 114 |
return numRenders; |
136 | 115 |
} |
137 | 116 |
|
117 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
118 |
// PUBLIC API |
|
138 | 119 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
139 | 120 |
/** |
140 | 121 |
* Draws all the attached children to this OutputSurface. |
... | ... | |
144 | 125 |
* @param time Current time, in milliseconds. This will be passed to all the Effects stored in the children Nodes. |
145 | 126 |
* @return Number of objects rendered. |
146 | 127 |
*/ |
147 |
public int renderOld(long time)
|
|
128 |
public int render(long time) |
|
148 | 129 |
{ |
149 | 130 |
// change tree topology (attach and detach children) |
150 | 131 |
/* |
... | ... | |
179 | 160 |
// mark OpenGL state as unknown |
180 | 161 |
DistortedRenderState.reset(); |
181 | 162 |
|
182 |
int numRenders = 0;
|
|
163 |
int numRenders=0;
|
|
183 | 164 |
|
184 | 165 |
for(int i=0; i<mNumChildren; i++) |
185 | 166 |
{ |
186 |
numRenders += mChildren.get(i).drawRecursive(time,this);
|
|
167 |
numRenders += mChildren.get(i).renderRecursive(time);
|
|
187 | 168 |
} |
188 | 169 |
|
170 |
setAsOutput(); |
|
171 |
numRenders += renderChildren(time,mNumChildren,mChildren); |
|
172 |
|
|
189 | 173 |
return numRenders; |
190 | 174 |
} |
191 | 175 |
|
Also available in: Unified diff
Now there's a single place one can have a look at all the Meshes being rendered to a OutputSurface: OutputSurface.renderChildren().
This will need to get modified for per-object post-processing.