C スタイルの配列は確かに単なる "美化されたポインター" ではありませんが、ネイキッド C スタイルの配列は、どのようにスライスしても割り当て可能ではありません。C++11 はその点で何も変更しません。
君の
*(vertex[0]) = *new GLfloat[3] {0.0f, 0.0f, 0.0f};
あなたが思っていることをしません。左側でvertex[0]は、 へのポインターに減衰しvertex[0][0]、これを*. したがって、左側のサイズは単純にvertex[0][0]です。
一方、新しく割り当てられた名前のない配列new GLfloat[3] {0.0f, 0.0f, 0.0f}の要素へのポインターを返します。[0]はその*ポインタを逆参照し、その[0]要素にアクセスできるようにします。
上記は、あなたの割り当てが実際に同等であることを意味します
vertex[0][0] = nameless_dynamic_array[0];
つまり、そうです
vertex[0][0] = 0.0f;
新しい配列がメモリリークになります。
配列全体を割り当てるには、それをクラスにラップする必要があります(std::array標準のラッパーです)。または、何らかの理由で裸の C スタイルの配列を使用する必要がある場合は、std::copyまたはを使用memcpyして、ある配列から別の配列にデータをコピーします。