glDraw * просто скажите OGL, чтобы нарисовать что-то в текущем контексте и что, возможно, связано со многими состояниями, такими как Shader, Blender, VBO/VAO, Z/Stencil, Texture и т. Д. Даже небольшое изменение может привести к другому результату рендеринга, так что вы можете создать изображение DSA glDraw * будет длинным списком параметров функций, это нехорошо. Например, вы хотите изменить cull face с CW на CCW, возможно, вам нужно найти соответствующий параметр в длинном вызове функции и изменить его. Следует отметить, что OGL является наиболее похожим на C, а функция параметров по умолчанию ограничена, каждый раз, когда вы вызываете DSA glDraw *, вам нужно иметь длинный вызов функции с самыми близкими значениями, что сделает вас сумасшедшими.
Как пояснил Энден М. Коулман, DSA направлена на сокращение последовательности вызовов общей функции вызова функции OGL: bind-> modify-> unbind, а DSA требуется только 1 вызов API. Это уменьшит время процессора, особенно у вас очень большие вызовы API OGL.
Благодаря
Я думаю, вы можете быть более здравомыслящие DSA. Если вы хотите реализовать команду рисования с нулевыми побочными эффектами, ей также нужно будет взять дескриптор программы GLSL для использования, чтобы вам также не пришлось вызывать 'glUseProgram (...)', массив текстур для привязки для каждого блока изображения и так далее. DSA больше подходит для изменения состояний объектов без привязки указанного объекта. –