Еще одна вещь, которую вы можете сделать, это преобразовать некоторые параметры в состояние . Функции OpenGL имеют меньше параметров, потому что у вас есть такие вызовы, как:
glBindFramebuffer( .. ) ;
glVertexAttribPointer( .. ) ;
glBindTexture( .. ) ;
glBindBuffer( .. ) ;
glBindVertexArray( .. ) ;
// the actual draw call
glDrawArrays( .. ) ;
Все эти (glBind*
вызовы типа) представляют «изменение состояния», все из которых будут влиять на следующий вызов отрисовки. Вообразите вызов ничьей с 20 с чем-то аргументами .. абсолютно неуправляемым!
Старый Windows C API для рисования также имел состояние, хранящееся внутри объектов «непрозрачный указатель» (HDC
, HWND
'..). Непрозрачный указатель - это, по сути, способ C создавать частные элементы данных, к которым у вас нет прямого доступа. Так, например, в API рисования Windows вы должны создать непрозрачный указатель HDC с помощью createDC
. Вы можете установить внутренние значения DC через
функции SetDC*
, например SetDCBrushColor
.
Теперь, когда у вас есть DC, настроенный на цвет и все, вы можете использовать функцию Rectangle
для входа в DC. Вы передали HDC
в качестве первого параметра, который содержал информацию о том, какую цветную кисть использовать и т. Д. Rectangle
затем принимает только 5 параметров, hdc
, x, y, ширину и высоту.