Initial commit
This commit is contained in:
174
application/source/engine/renderPasses/renderPassFont.c
Normal file
174
application/source/engine/renderPasses/renderPassFont.c
Normal file
@@ -0,0 +1,174 @@
|
||||
|
||||
|
||||
#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 font 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() {
|
||||
|
||||
printf("\n\n\n Prepare renderPass Font\n\n\n\n\n");
|
||||
|
||||
|
||||
|
||||
|
||||
shader * vertexShader = new shader( GL_VERTEX_SHADER );
|
||||
|
||||
vertexShader->loadFromFile( "assets/shaders/quad.vertex" );
|
||||
|
||||
|
||||
shader * fragmentShader = new shader( GL_FRAGMENT_SHADER );
|
||||
|
||||
fragmentShader->loadFromFile( "assets/shaders/quad.fragment" );
|
||||
|
||||
|
||||
|
||||
this->program = new program();
|
||||
|
||||
this->program->addShader( vertexShader );
|
||||
|
||||
this->program->addShader( fragmentShader );
|
||||
|
||||
this->program->create();
|
||||
|
||||
|
||||
sampler2D * samplerArray = new sampler2D();
|
||||
|
||||
samplerArray->target = GL_TEXTURE_2D_ARRAY;
|
||||
|
||||
samplerArray->format = GL_RED;
|
||||
|
||||
samplerArray->internalFormat = GL_RED;
|
||||
|
||||
samplerArray->WRAP_S = GL_CLAMP_TO_EDGE;
|
||||
|
||||
samplerArray->WRAP_S = GL_CLAMP_TO_EDGE;
|
||||
|
||||
samplerArray->cubeSize = new vector3( 128, 128, 170 );
|
||||
|
||||
samplerArray->UNPACK_ALIGNMENT = true;
|
||||
|
||||
|
||||
this->samplerArray = samplerArray;
|
||||
|
||||
block * fontBlock = this->program->getBlock( "fontData" );
|
||||
|
||||
|
||||
this->mesh = new mesh();
|
||||
|
||||
this->mesh->setProgram( this->program );
|
||||
|
||||
this->mesh->createBuffers();
|
||||
|
||||
|
||||
glUseProgram( this->program->glProgram );
|
||||
|
||||
for ( int i = 1; i < 170; ++i )
|
||||
{
|
||||
texture2D * characterTexture = this->font->loadFont( 34 + i );
|
||||
|
||||
vector2 * offset = characterTexture->offset;
|
||||
|
||||
printf("%c offset left: %f, offset top: %f bitmap->rows: %i\n", (char) 34 + i, offset->x, offset->y, characterTexture->height );
|
||||
|
||||
vector2 * size = new vector2( characterTexture->width, characterTexture->height );
|
||||
|
||||
fontBlock->setMemberItem( "fontOffsets[0]", i - 35, offset );
|
||||
|
||||
//if( i > 34 ) {
|
||||
|
||||
fontBlock->setMemberItem( "fontSizes[0]", i - 35, size );
|
||||
|
||||
//}
|
||||
|
||||
samplerArray->addTexture( characterTexture );
|
||||
|
||||
}
|
||||
|
||||
fontBlock->upload();
|
||||
|
||||
this->program->setUniform( "samplerArray", samplerArray );
|
||||
|
||||
|
||||
|
||||
vector<int> * textArray = new vector();
|
||||
|
||||
char * someText = "Wauw this is myp first text.";
|
||||
|
||||
for (int i = 0; i < strlen(someText); ++i)
|
||||
{
|
||||
|
||||
int charNumber = ( char ) someText[i] - 35;
|
||||
|
||||
printf(" %i\n", charNumber );
|
||||
|
||||
textArray->add( charNumber );//
|
||||
|
||||
}
|
||||
|
||||
block * inputBlock = this->program->getBlock( "inputBlock" );
|
||||
|
||||
inputBlock->setMemberArray( "characters[0]", ( float * ) textArray->items );
|
||||
|
||||
inputBlock->upload();
|
||||
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
int numItems = 12;
|
||||
|
||||
|
||||
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||||
|
||||
|
||||
this->program->use();
|
||||
|
||||
this->program->bindBlock( "inputBlock");
|
||||
|
||||
this->program->bindBlock( "fontData");
|
||||
|
||||
|
||||
this->program->setUniform( "samplerArray", this->samplerArray );
|
||||
|
||||
|
||||
|
||||
glBindVertexArray( this->mesh->vertexArrayObject );
|
||||
|
||||
glDrawElements( GL_TRIANGLES, numItems, GL_UNSIGNED_INT, ( void * ) 0 );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user