GLuint b;
glGenBuffers(1,&b);
glBindBuffer(GL_ARRAY_BUFFER,b);
glBufferData(GL_ARRAY_BUFFER,...);
Я думаю, что это станетМожно ли эмулировать прямой доступ к государству?
GLuint b;
glCreateBuffers(1,&b);
glBufferData(b,...);
Теперь нет необходимости для целей типа «GL_ARRAY_BUFFER» больше. Но как я тогда подражать этому < 4.5?
Могу ли я просто привязать «все» к GL_ARRAY_BUFFER за кулисами?
glBufferDataDSA(GLuint b,...){
glBindBuffer(GL_ARRAY_BUFFER,b);
glBufferData(GL_ARRAY_BUFFER,...);
glBindBuffer(GL_ARRAY_BUFFER,0);
}
Я имею в виду, что это не должно повлиять на то, что я связываю, если я всегда обязательно установлю привязку.
Или у меня возникнут проблемы, если я попытаюсь подражать DSA, как это?
самая большая боль с эмуляцией DSA восстанавливает состояние, поэтому код, не поддерживающий DSA, не прерывается. –
@ratchetfreak: Я обнаружил, что использование схемы, подобной RAII, действительно помогает в этом. Я создаю серию объектов в начале моей поддельной реализации DSA, которая инкапсулирует селектор, заявляет изменения вызова функции, и когда эти объекты уничтожаются (выходят за рамки), они автоматически восстанавливают состояние. Это немного менее уродливо, чем необходимость запоминать его самостоятельно для каждого возможного пути управления в функции DSA, которую вы пытаетесь реализовать. DSA *** *** *** в GL 4.5, но это будут годы и годы, прежде чем это означает, что он широко доступен, поэтому эти хаки остаются необходимыми: - \ –