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; }
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; }
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; }