118 lines
2.1 KiB
C
118 lines
2.1 KiB
C
|
|
|
||
|
|
|
||
|
|
#include "renderPass.h"
|
||
|
|
|
||
|
|
#include "../event.h"
|
||
|
|
|
||
|
|
#include "../vector2.h"
|
||
|
|
|
||
|
|
#include "../shader.h"
|
||
|
|
|
||
|
|
#include "int.h"
|
||
|
|
|
||
|
|
#include "../fontRenderer.h"
|
||
|
|
|
||
|
|
#include "../program.h"
|
||
|
|
|
||
|
|
#include "../mesh.h"
|
||
|
|
|
||
|
|
class tesselation extends renderPass{
|
||
|
|
|
||
|
|
|
||
|
|
struct program * program;
|
||
|
|
|
||
|
|
struct mesh * mesh;
|
||
|
|
|
||
|
|
fontRenderer * font = new fontRenderer();
|
||
|
|
|
||
|
|
sampler2D * samplerArray;
|
||
|
|
|
||
|
|
char * textFromNumber( int i) {
|
||
|
|
|
||
|
|
char * fileName = malloc( sizeof( char ) * 100 );
|
||
|
|
|
||
|
|
sprintf( fileName, "%d", i );
|
||
|
|
|
||
|
|
return fileName;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
prepare() {
|
||
|
|
|
||
|
|
shader * vertexShader = new shader( GL_VERTEX_SHADER );
|
||
|
|
|
||
|
|
vertexShader->loadFromFile( "assets/shaders/quadScale.vertex" );
|
||
|
|
|
||
|
|
|
||
|
|
shader * fragmentShader = new shader( GL_FRAGMENT_SHADER );
|
||
|
|
|
||
|
|
fragmentShader->loadFromFile( "assets/shaders/color.fragment" );
|
||
|
|
|
||
|
|
|
||
|
|
shader * geometryShader = new shader( GL_GEOMETRY_SHADER );
|
||
|
|
|
||
|
|
geometryShader->loadFromFile( "assets/shaders/tesselation.geometry.shader" );
|
||
|
|
|
||
|
|
|
||
|
|
shader * tesselationControlShader = new shader( GL_TESS_CONTROL_SHADER );
|
||
|
|
|
||
|
|
tesselationControlShader->loadFromFile( "assets/shaders/tesselation.triangle.tsc.shader" );
|
||
|
|
|
||
|
|
|
||
|
|
shader * tesselationEvaluationShader = new shader( GL_TESS_EVALUATION_SHADER );
|
||
|
|
|
||
|
|
tesselationEvaluationShader->loadFromFile( "assets/shaders/tesselation.triangle.shader" );
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
this->program = new program();
|
||
|
|
|
||
|
|
this->program->addShader( vertexShader );
|
||
|
|
|
||
|
|
this->program->addShader( fragmentShader );/*
|
||
|
|
|
||
|
|
this->program->addShader( geometryShader );
|
||
|
|
|
||
|
|
this->program->addShader( tesselationControlShader );
|
||
|
|
|
||
|
|
this->program->addShader( tesselationEvaluationShader );*/
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
this->program->create();
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
this->mesh = new mesh();
|
||
|
|
|
||
|
|
this->mesh->setProgram( this->program );
|
||
|
|
|
||
|
|
this->mesh->createBuffers();
|
||
|
|
|
||
|
|
|
||
|
|
glUseProgram( this->program->glProgram );
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
render() {
|
||
|
|
|
||
|
|
glUseProgram( this->program->glProgram );
|
||
|
|
|
||
|
|
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||
|
|
|
||
|
|
int numItems = 12;
|
||
|
|
|
||
|
|
//this->program->setUniform( "samplerArray", this->samplerArray );
|
||
|
|
|
||
|
|
glBindVertexArray( this->mesh->vertexArrayObject );
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
glDrawElements( GL_LINE_STRIP, numItems, GL_UNSIGNED_INT, ( void * ) 0 );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|