Я склонен оборачивать объекты OpenGL в свои собственные классы. В OpenGL есть концепция связывания, где вы связываете свой объект, что-то делаете с ним, а затем отвязываете его. Например, текстура:
glBindTexture(GL_TEXTURE_2D, TextureColorbufferName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1000);
glBindTexture(GL_TEXTURE_2D, 0);
Упаковка будет выглядеть примерно так:
texture->bind();
texture->setParameter(...);
texture->setParameter(...);
texture->unBind();
Проблема здесь в том, что я хочу избежать функций bind () и unBind (), а вместо этого просто иметь возможность вызывать методы set, и GLObject будет связан автоматически.
Я мог бы просто сделать это в каждой реализации метода:
public void Texture::setParameter(...)
{
this.bind();
// do something
this.unBind();
}
Хотя тогда я должен делать это для каждого добавленного метода! Есть ли лучший способ, чтобы он выполнялся автоматически до и после добавления каждого метода?