Cześć w jaki sposób zdefiniować domyślną referencje do tablicy std::array tak żebym nie musiał podawać argumentu color podczas wywoływania funkcji, czy sprawę blokuje tutaj szablon?
próbowałem std::array<_Tp, _SIZE_COLOR> & color=(std::array<float,8>{}) , i używam jako:
this->rawModel = loader.loadToVAO<float>(arrayPosition); ale nie działa.
co ciekawe jak zrobię to tak:
std::array<float,8> color={};
std::array<float, 8> arrayPosition=this->createVertexPosition(position);
this->rawModel = loader.loadToVAO<float>(arrayPosition,color);
to jest ok.
template <typename _Tp, std::size_t _SIZE_POSITION, std::size_t _SIZE_COLOR>
std::shared_ptr<RawModel> loadToVAO(std::array<_Tp, _SIZE_POSITION> & position, std::array<_Tp, _SIZE_COLOR> & color)
{
VertexArray *vao = new VertexArray();
vao->Bind();
VertexBuffer *vbo = new VertexBuffer(position._M_elems, sizeof(_Tp) * position.size());
VertexBufferLayout layout;
layout.Push<_Tp>(2);
vao->AddBuffer(vbo, layout);
VertexBuffer *vbo_color=new VertexBuffer(color._M_elems, sizeof(_Tp)*color.size());
VertexBufferLayout layout2;
layout2.Push<_Tp>(3);
vao->AddBuffer(vbo_color, layout2);
std::shared_ptr<RawModel> rawModel(new RawModel());
rawModel->addVAO(vao);
return rawModel;
}
czy lepszym rozwiązaniem ze względu na to że używam templatu to moze overload?
Pozdrawiam