Обновление приложения для поддержки спецификации ядра OpenGL 3.2
Спецификация OpenGL 3.0 осудила много областей функциональности, определенной в более ранних версиях спецификации OpenGL. Профиль Ядра OpenGL 3.2 явно удаляет эти устаревшие функции и корректирует другие части спецификации для обеспечения оптимизированного, чистого интерфейса программирования для OpenGL. Используйте эту главу для помощи Вам в миграции Вашего приложения далеко от этой осуждаемой функциональности.
Удаленная функциональность
Функции, удаленные из OpenGL, описаны в в Приложении E спецификации Ядра OpenGL 3.2, и необходимо использовать это в качестве полного руководства для изменений, которые необходимо внести в приложении. Вот сводка старших значащих областей, изменившихся:
Если Ваше приложение использует конвейер стандартных функций, оно должно быть переписано для использования программ построения теней вместо этого.
Если Ваше приложение использует программы построения теней, необходимо переписать программы построения теней для использования Языка Штриховки OpenGL 1.5; много встроенных переменных программы построения теней, предоставленных в более ранних версиях Языка Штриховки OpenGL, были явно удалены из Языка Штриховки OpenGL 1,5 спецификации. Точно так же Ваше приложение больше может не предоставлять данные вершины с помощью подпрограмм стандартной функции; все атрибуты вершины теперь указаны как универсальные атрибуты вершины.
Ваше приложение должно явно генерировать имена объектов с помощью OpenGL API.
Данные вершины должны быть предоставлены OpenGL с помощью буферных объектов.
Встроенная матричная функциональность штабеля от более ранних версий OpenGL была удалена; необходимо воссоздать эту функциональность с помощью вводов программы построения теней.
Поддержка вспомогательных и буферов накопления была удалена; используйте объекты кадрового буфера вместо этого.
Ваше приложение больше не выбирает список расширений как единственная строка. Вместо этого Вы сначала выбираете число расширений и затем отдельно выбираете каждую дополнительную строку.
Расширение изменяется на OS X
OpenGL 3.2 обеспечивает функциональность, которую более ранние версии OpenGL обеспечили посредством расширений. Другие расширения, ранее поддерживавшиеся на OS X, больше не поддерживаются, когда Ваше приложение использует профиль Ядра OpenGL 3.2. Таблица b-1 перечисляет расширения, описанные в другом месте в этом руководстве; используйте эту таблицу, чтобы определить, поддерживается ли расширение, и в противном случае какая эквивалентная функциональность поддерживается.
Расширение | Состояние |
---|---|
APPLE_fence | Устаревший. Используйте |
ARB_vertex_buffer_object | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
APPLE_vertex_array_object | Устаревший. Используйте |
APPLE_vertex_array_range | Устаревший. Используйте |
APPLE_flush_buffer_range | Устаревший. Используйте |
APPLE_client_storage | Поддерживаемый. |
APPLE_texture_range | Поддерживаемый. |
ARB_texture_rectangle | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
ARB_shader_objects | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
ARB_vertex_shader | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
ARB_fragment_shader | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
EXT_transform_feedback | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
EXT_gpu_shader4 | Устаревший. Функциональность включена в GLSL 1.5 |
EXT_geometry_shader4 | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
EXT_bindable_uniform | Устаревший. Используйте |
ARB_pixel_buffer_object | Функциональность, предоставленная OpenGL 3.2 (Ядро). |
EXT_framebuffer_object | Устаревший. Используйте |
APPLE_pixel_buffer | Устаревший. Используйте объекты кадрового буфера вместо этого. |
NV_multisample_filter_hint | Устаревший. Используйте мультивыбранный renderbuffers для точного управления мультивыборкой. |