Воскресенье, 2024-05-19
Сборник компьютерных технологий
Меню сайта
Категории раздела
My articles [30]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » My articles

GL_ARB_uniform_buffer_object на русском.
Версия

Дата последней модификации: 03/26/2009
Author revision: 62

Номер

ARB Extension #57

Зависимости.
Требуется поддержка OpenGL Shading Language (GLSL). Должно поддерживаться OpenGL 2.0 или расширение ARB_shader_objects.

Должно поддерживаться OpenGL 1.5 или ARB_vertex_buffer_object.

This extension is written against the OpenGL 2.1 specification and
version 1.20-8 of the OpenGL Shading Language спецификации.

Это расширение взаимодействует с OpenGL 3.0, ARB_geometry_shader4,
ARB_texture_rectangle, EXT_gpu_shader4, EXT_texture_array,
EXT_texture_integer, and EXT_texture_buffer_object.

Обзор.
Данное расширение вводит понятие группа GLSL юниформов(uniforms), называемых "uniform block" ("блок юниформ"). Так же5 расширение вводит API механизмы для хранения этих блоков в GL буферах объектов (buffer objects).

Расширение также определяет оба стандартных кросс-платформенных макета в памяти для оптимизации данных, осуществленных определенным образом. [предыдущее предложение пишется: The extension also defines both a standard cross-platform layout in memory for uniform block data, as well as mechanisms to allow the GL to optimize the data layout in an implementation-defined manner.]

 До введение этого расширения существующий интерфейс модификации значений юниформов (uniforms) допускал модификацию большого числа значений, используя вызовы GLUniform*, но только для одного юниформа [имеются ввиду как юниформы простых типов, так и массивы] за один промежуток времени. Однако обновление юниформов таким образом не может отобразить разнородные структуры юниформ данных, поэтому приложение поступает двумя путями:

А) реструктуировать юниформ данные в массивы;

Б) внести чрезмерное количество вызывов через интерфейс GL , чтобы привести всё к одному Uniform* варианту.

 Эти решения имеют свои недостатки. Решение налагает значительные накладные расходы на разработчиков приложений. Решение B может вызывать значительную run-time нагрузку на приложение, если количество изменений в юниформах на один кадр оказывается достаточно велико.

Это расширение обеспечивает лучший вариант, чем А или Б, позволяя буферному объекту сохранять связь со всеми юниформами GLSL шейдеров.

Хранение равномерных блоков в буфере объектов позволяет использовать несколько ключевых случаев:

  - Обмен данными юниформов сохраняется между программными объектами и
  между этапами программы

  - Быстрая замена набора заранее определенных юниформ, сохранив
  комплекты юниформ данных на сервере GL

  - Быстрое обновление равномерной юниформ данных и от клиента и от сервера

 Хранения данных для единого блока могут быть объявлены для использования одной из 3-х раскладок в памяти: упаковано (packed), общие (shared) и std140.

- "packed" юниформ блоки зависят от реализации данных
  макета (layout) для повышения эффективности, и неиспользуемые юниформы могут быть устранены компилятором для экономии места.

- "shared" единый блок, разметка по умолчанию, имеют зависимые от реализации расположения данных для повышения эффективности, однако формат будет единственным определяющим структуру блока, что позволяет для хранения данных будет  общими для всех программ.

- "Std140" единого блоки стандартных кросс кросс-платформенных поставщиков
  макет (см. ниже). Неиспользованные юниформы не будут устранены.



Источник: http://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt
Категория: My articles | Добавил: (2010-07-24) | Автор: DungeonLords
Просмотров: 1234
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright Forcer, Inc © 2024
    Бесплатный конструктор сайтов - uCoz