Первоначальная терминология основана на нотации X11, где сервером является действительная система графического отображения:
и
glEnableClientState
и glDisableClientState
устанавливают состояние клиентской части. Раньше массивы вершин располагались в памяти процесса клиента, поэтому рисование с использованием массивов вершин было локальным процессом клиента.
Сегодня у нас есть объекты буфера, которые помещают данные в память сервера, что делает всю терминологию на стороне клиента массивов вершин нелогичной. Было бы разумно отбрасывать состояния клиентов и включать / отключать массивы вершин с помощью обычных функций glEnable
/ glDisable
, как мы это делаем с объектами и текстурами кадрового буфера.
Если вы рисуете свою графику, передавая буферы в OpenGL (glVertexPointer () и т. Д.) Вместо прямых вызовов (glVertex3f ()), вам нужно указать OpenGL, какие буферы использовать.
Таким образом, вместо того, чтобы вызывать glVertex и glNormal, вы должны создавать буферы, связывать их и использовать glVertexPointer и glNormalPointer, чтобы указывать OpenGL на ваши данные. После этого вызов glDrawElements (или тому подобное) будет использовать эти буферы для рисования. Тем не менее, еще один обязательный шаг - сообщить драйверу OpenGL, какие буферы вы на самом деле хотите использовать, для чего и используется glEnableClientState ().
Это все очень волнистые. Вы должны прочитать об объектах буфера вершин и попробовать их.