OpenGLで動的に動くオブジェクトを描画するための最良のアプローチは何ですか?
現在、私は次のようにやっています: 私は class を持っておりActor
、そのコンストラクターでバッファーを生成します:
Actor::Actor(float x, float y): xpos(x),
ypos(y),
width(1),
height(1) {
glGenBuffers(1, &buffer);
}
他のすべての処理はすべてのフレームで行われます。
for(auto const &a: actors) {
float x = (a.xpos / tiles_x) * 2 - 1.0f + (1 / tiles_x);
float y = -((a.ypos / tiles_y) * 2 - 1.0f + (1 / tiles_y));
float w = a.width / (tiles_x);
float h = a.height / (tiles_y);
const GLfloat vertex[] {
x - w, y - h, 1.0f,
x - w, y + h, 1.0f,
x + w, y + h, 1.0f,
x - w, y - h, 1.0f,
x + w, y - h, 1.0f,
x + w, y + h, 1.0f,
};
glBindBuffer(GL_ARRAY_BUFFER, a.buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex), vertex, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0,
3,
GL_FLOAT,
GL_FALSE,
0,
(void*)0);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(0);
}
私は OpenGL の専門家ではありませんが、かなり効率が悪いように思えます。これには、別のより効率的な方法はありませんか?