następujące klasy obudowuje nazwę OpenGL bufora i udostępnia kilka metod do zmiany stanu bufora:powinienem zadeklarować const metoda, gdy bazowego stan OpenGL jest zmodyfikowaną
class BufferObject {
public:
explicit BufferObject(GLenum type);
virtual ~BufferObject();
// some methods omitted
void dataStore(GLsizeiptr size, const GLvoid* data, int usage);
void* mapBufferRange(GLintptr offset, GLsizeiptr length, int accessFlag);
void unmapBuffer() const;
private:
GLuint object_;
};
Żadna z tych metod zmień stan obiektu BufferObject
, aby wszystkie mogły zostać zadeklarowane za pomocą const
. Jednakże, dataStore
i mapBufferRange
oba wywołują metody OpenGL, które zmieniają stan obiektu na GPU (odpowiednio: glBufferData
i glMapBufferRange
). Chciałbym zadeklarować je bez const
, aby wskazać, że modyfikują stan na GPU.
Jaka jest najlepsza praktyka do naśladowania w tej sytuacji?
[Ta odpowiedź] (http://stackoverflow.com/a/25972249/183120) ma przyzwoite wyjaśnienie na ten temat. – legends2k