#include "renderPass.h" #include "../event.h" #include "../../vector2.h" #include "../shader.h" #include "../program.h" #include "../../int.h" #include "../sampler2D.h" #include "stdbool.h" #include "../block.h" class compute2 extends renderPass{ struct program * program; int active = true; prepare() { printf("\n\n\n Prepare renderPass Compute 2\n\n\n\n\n"); shader * computeShader = new shader( GL_COMPUTE_SHADER ); computeShader->loadFromFile( "assets/shaders/addition2.comp" ); this->program = new program(); this->program->addShader( computeShader ); this->program->create(); } render() { if( this->active ) { this->program->use(); this->program->bindBlock( "outputBlock2" ); glDispatchCompute( 1, 1, 1 ); block * outputBlock = this->program->getBlock( "outputBlock2" ); vector * output = outputBlock->getMemberArray( "array_d[0]" ); int count = output->length(); for (int i = 0; i < count; ++i) { vector2 currentVector = output->get( i ); printf("%i = %f %f \n", i, i, currentVector.x, currentVector.y ); } printf("length: %i\n\n", count); this->active = false; } } }