0

以前に描画した要素を変換するにはどうすればよいですか? 画面に約 400 万個の頂点を描画しました。それらを描画した後に変換したいと考えています。翻訳するたびに再描画したくありません (400 万!)。

関連するコードは次のとおりです。

glOrtho(0, 1024, 0, 576, 0, -4096);
glTranslatef(-512, -288, 512);
glRotatef(45, 1, 0, 0);
glTranslatef(512, 0, -512);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.F, 1.F, 1.F);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_INT, 0, &vertices[0]);
glDrawElements(GL_QUADS, vertexIndex.size(), GL_UNSIGNED_INT, &vertexIndex[0]);
glDisableClientState(GL_VERTEX_ARRAY);
// I would like to translate here
4

1 に答える 1

3

不可能です。頂点の位置に変換マトリックスを内部的に乗算して、画面に描画される最終的な位置を取得します。

したがって、描画後にマトリックスを変更しようとしても、描画された頂点には何の影響もありません。

問題を解決するには、描画する前に変換するだけです...これは標準的な方法であり、他に方法はありません。

于 2013-07-27T19:58:20.743 に答える