Revision 4:ab6db404403a CollidoscopeApp/src

View differences:

CollidoscopeApp/src/ParticleController.cpp
10 10
mNumParticles( 0 )
11 11

  
12 12
{
13
    // uses Cinder (and OpenGL) virtual buffer object based drawing
14
    // see ParticleSphereCPU example in Cinder library 
15
     
13 16
    mParticles.assign( kMaxParticles, Particle() );
14 17
    mParticlePositions.assign( kMaxParticles, vec2( -1, -1 ) );
15 18

  
......
20 23

  
21 24
    auto mesh = gl::VboMesh::create( mParticlePositions.size(), GL_POINTS, { { particleLayout, mParticleVbo } } );
22 25

  
26
    // creates glsl program to run the batch with 
23 27
#if ! defined( CINDER_GL_ES )
24 28
    auto glsl = gl::GlslProg::create( gl::GlslProg::Format()
25 29
        .vertex( CI_GLSL( 150,
......
70 74

  
71 75
void ParticleController::updateParticles()
72 76
{
77
    // update the positions of the particles and dispose them if they're reached their timespan
73 78
    for ( size_t i = 0; i < mNumParticles; i++ ){
74 79

  
75 80
        Particle &particle = mParticles[i];
......
95 100
        }
96 101
    }
97 102

  
103
    // Copy particle data onto the GPU.
104
	// Map the GPU memory and write over it.
98 105
    void *gpuMem = mParticleVbo->mapReplace();
99 106
    memcpy( gpuMem, mParticlePositions.data(), mParticlePositions.size() * sizeof( vec2 ) );
100 107
    mParticleVbo->unmap();
......
102 109

  
103 110
void ParticleController::addParticles(int amount, const vec2 &initialLocation, const float cloudSize)
104 111
{
112
    // reduce the particles liearly to the total number of particles already present 
113
    // the more particles aleary present the less particle are added
105 114
    int reduction = ci::lmap<int>(mNumParticles, 0, kMaxParticles, 0, kMaxParticleAdd);
106 115
    amount -= reduction;
107 116

  
108 117
    if ( mNumParticles + amount > kMaxParticles ){
109
		//return;
118
		//a.k.a. return if reached kMaxParticles 
110 119
        amount = kMaxParticles - mNumParticles;
111 120
	}
112 121

  
CollidoscopeApp/src/Wave.cpp
16 16
		mChunks.emplace_back( i );
17 17
	}
18 18

  
19
    // init cinder batch drawing
19 20
    auto lambert = gl::ShaderDef().color();
20 21
    gl::GlslProgRef shader = gl::getStockShader( lambert );
21 22
    mChunkBatch = gl::Batch::create( geom::Rect( ci::Rectf( 0, 0, Chunk::kWidth, 1 ) ), shader );
......
63 64

  
64 65
        double elapsed = now - itr->second.lastUpdate;
65 66

  
67
        // A chunk of audio corresponds to a certain time according to sample rate.
68
        // Use elapsed time to advance through chunks so that the cursor is animated 
69
        // and goes from start to end of the seleciton in the time span of the grain 
66 70
        itr->second.pos = mSelection.getStart() + int( elapsed / secondsPerChunk );
67 71

  
68
        /* check we don't go too far off */
72
        // check we don't go too far off 
69 73
        if (itr->second.pos > mSelection.getEnd()){
70 74
            itr->second.pos = Cursor::kNoPosition;
71 75
        }

Also available in: Unified diff