void SpriteManagerBaseNonTemplate::handleCreate(fm::Size spriteIndexBeg, fm::Size spriteIndexEnd, const fg::Glyph &shape, fm::vec3 pos, fm::vec2 size, fm::vec2 dir, fm::vec4 clr) { if (!m_shader.isLoaded() && m_shaderResult) loadShader(); if (m_drawData.getDrawCount() == 0) setupDrawData(); fm::vec2 uvsPos = shape.pos; fm::vec2 uvsSiz = shape.size; fm::vec2 frameS = shape.leftdown; fm::Size amount = spriteIndexEnd - spriteIndexBeg; if (useInstancing()) { m_posProp.push(&pos.x,amount); m_dirProp.push(&dir.x,amount); m_sizProp.push(&size.x,amount); m_uvpProp.push(&uvsPos.x,amount); m_uvsProp.push(&uvsSiz.x,amount); m_frmProp.push(&frameS.x,amount); m_clrProp.push(&clr.x,amount); } else { fm::vec3 *pts; fm::vec2 *uvs; fm::vec4 *clrP; buildVertices(&pts,&uvs,&clrP,pos,size,shape,dir,clr); m_vertPtsProp.push(&pts[0].x,amount); m_vertUVsProp.push(&uvs[0].x,amount); m_vertClrProp.push(&clrP[0].x,amount); delete[] pts; delete[] uvs; delete[] clrP; } m_spriteCount += amount; updateDrawCall(); }
void TerrainFBO::setup() { w =2048*2; h=2048*2; setupProgram(); setupFBO(); setupDrawData(); npMaterial mat; mat.loadDiffuse("3DAssets/terrainNoise.png"); textureNoise = mat.diffuseTexture; }