Project

General

Profile

« Previous | Next » 

Revision b2939df4

Added by Leszek Koltunski over 7 years ago

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.

View differences:

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