示例#1
0
int
rsxgltest_draw()
{
  float rgb[3] = {
    compute_sine_wave(rgb_waves,rsxgltest_elapsed_time),
    compute_sine_wave(rgb_waves + 1,rsxgltest_elapsed_time),
    compute_sine_wave(rgb_waves + 2,rsxgltest_elapsed_time)
  };

  glClearColor(rgb[0],rgb[1],rgb[2],1.0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  return 1;
}
示例#2
0
文件: wave.c 项目: theFork/uMIDI
midi_value_t update_wave(struct wave* const wave)
{
    // Increment speed counter
    ++wave->state.speed_counter;

    // Change the wave output value only if the speed prescaler was reached
    if (wave->state.speed_counter < wave->state.speed_prescaler) {
        goto return_output;
    }

    // Reset speed counter
    wave->state.speed_counter = 0;

    // Advance step counter
    advance_step_counter(wave);

    // Compute new wave output value
    static uint16_t output = 0;
    switch (wave->settings.waveform) {
        case WAVE_OFF:
            return 0;

        case WAVE_RANDOM:
            output = compute_random_wave(wave);
            break;

        case WAVE_SAW_DOWN:
            output = compute_saw_down_wave(wave);
            break;

        case WAVE_SAW_UP:
            output = compute_saw_up_wave(wave);
            break;

        case WAVE_SINE:
            output = compute_sine_wave(wave);
            break;

        case WAVE_SQUARE:
            output = compute_square_wave(wave);
            break;

        case WAVE_STAIRS:
            output = compute_stairs_wave(wave);
            break;

        case WAVE_TRIANGLE:
            output = compute_triangle_wave(wave);
            break;
    }

    // Amplify and add offset
    output *= wave->settings.amplitude;
    output /= MIDI_MAX_VALUE;
    output += wave->settings.offset;

return_output:
    return output;
}
示例#3
0
int
rsxgltest_draw()
{
  float rgb[3] = {
    compute_sine_wave(rgb_waves,rsxgltest_elapsed_time),
    compute_sine_wave(rgb_waves + 1,rsxgltest_elapsed_time),
    compute_sine_wave(rgb_waves + 2,rsxgltest_elapsed_time)
  };

  glClearColor(rgb[0],rgb[1],rgb[2],1.0);
  //glClearColor(0,0,0,1);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glUniform4f(c_location,1.0 - rgb[0],1.0 - rgb[1],1.0 - rgb[2],1);

  glDrawArrays(GL_TRIANGLES,0,6);

  return 1;
}