Встроенные массивы атрибутов устанавливаются не с glVertexAttribPointer
, а с такими функциями, как glVertexPointer
, glColorPointer
, ... . И вы включаете их, вызывая glEnableClientState
с такими константами, как GL_VERTEX_ARRAY
, GL_COLOR_ARRAY
, ... вместо glEnableVertexAttribArray
.
В то время как на nVidia glVertexAttribPointer
может работать, из-за их совмещения именных индексов атрибутов со встроенными атрибутами, это не соответствует стандарту, и я уверен, что вы не можете ожидать этого от любого другого производителя оборудования. Поэтому для уверенности используйте glVertexAttribPointer
для пользовательских атрибутов и функции glVertexPointer/glNormalPointer/...
для атрибутов bultin вместе с соответствующими функциями включения / выключения.
Имейте в виду, что встроенные атрибуты в любом случае устарели вместе с упомянутыми функциями. Поэтому, если вы хотите написать современный код OpenGL, вам все равно следует определить свои собственные атрибуты. Но, возможно, вам придется поддерживать устаревшие шейдеры или не заботиться о прямой совместимости на данный момент.