Буфер вершин directx

Исходя из названия, индексный буфер — это буфер для записи индексов в данные вершин.  buffer.SetData(verts, 0, LockFlags.None)

Содержание
1 Элементы трехмерной сцены
1.1 Аппаратные средства
1.2 Программные интерфейсы
2 Шесть этапов работы 3D-конвейера
2.1 Первый этап
2.2 Второй этап
2.3 Третий этап
2.4 Четвёртый этап
2.5 Пятый этап
2.6 Шестой этап
3 Особенности первого этапа
4 Второй этап: борьба за качество
4.1 Параметрические поверхности
4.2 Имитация параметрических поверхностей
5 Третий этап: борьба за скорость
5.1 Вершинные шейдеры
5.2 Адаптивная детализация
6 Четвертый этап: ухищрения сборки
6.1 Буфер глубины
7 Пятый этап: проблемы закраски
7.1 Пиксельные шейдеры
7.2 Адаптивное текстурирование
7.3 Фильтрация текстур
7.3.1 Билинейная фильтрация
7.3.2 Трилинейная фильтрация
7.4 Морфинг уровня детализации (LOD morphing)
7.4.1 Композитные текстуры
7.5 Сжатие текстур
7.6 Рельефное текстурирование
7.6.1 Карты окружающей среды
8 Шестой этап: борьба с дефектами
9 Имитация движения
10 Вокселы и тайлы
Элементы трехмерной сцены
В общем виде трехмерную сцену можно представить как набор отдельных групп элементов: группы трехмерных объектов, группы источников освещения, группы применяемых текстурных карт, группы камер.
Трехмерный объект обладает свойствами координат вершин треугольников в пространстве сцены и локальных координат в пространстве текстурной карты. Ему соответствует алгоритм поведения: параметры масштабирования, угла поворота, смещения и прочие изменения в течение времени в соответствии с замыслом разработчиков. Производным от первых двух свойств является грань — плоскость объекта, имеющая три вершины, с наложенными на нее текстурами.
Источник освещения может обладать следующим набором свойств (полностью или частично): координатами в пространстве сцены, ориентацией (направленностью), типом излучения (фоновым, точечным и т. п.), цветом и алгоритмом изменения светового излучения.
Камера представляет собой точку, откуда наблюдатель обозревает трёхмерную сцену. Почему же предпочитают использовать термин камера? Дело в том, что наблюдатель-человек обладает стереоскопическим зрением, а камера имеет только один «глаз». Поэтому глубину сцены приходится имитировать на плоском экране с помощью различных ухищрений. Плоскость, в которой расположена камера, называется плоскостью проецирования, или картинной плоскостью. Камера обладает свойствами координат в пространстве сцены, целевой точкой, углом зрения, углом поворота. Линия, соединяющая камеру и целевую точку, называется линией визирования. Угол поворота рассчитывается относительно оси линии визирования.

Как решить ету проблему с CS GO(не удалось заблокировать буфер вершин в CMeshDX8 :: LockVertexBuffer).

Текстурой (или текстурной картой) называют двух- или трёхмерное изображение, имитирующее зрительное восприятие человеком свойств различных поверхностей. На полигон можно накладывать несколько текстур, смешивая их различными способами, с тем, чтобы моделировать зрительный образ нужного материала. Специализированные текстуры (например, карты окружающей среды) сами не отображаются, а используются для модификации других текстур, накладываемых на полигон.
Аппаратные средства
В самом общем виде современный ускоритель 3D-графики должен иметь блок геометрических преобразований и расчёта освещения (геометрический процессор), блок механизма установки примитивов, блок обработки текстур и блок обработки буфера кадра. Геометрический процессор обрабатывает примитивы и строит проекцию трёхмерной сцены. Блок расчета освещения формирует данные о параметрах освещения для вершин примитивов.
Блок установки примитивов с помощью данных, полученных из буфера глубины, определяет видимость отображаемой точки (пиксела). Видимые пикселы обрабатываются в блоке текстур различными методами с применением одной из технологий фильтрации и наложения текстурных карт. Обработанный таким образом пиксел вновь помещается в буфер кадра, либо заменяя находящееся там значение, либо смешиваясь с ним по выбранному правилу.
Программные интерфейсы
Скорость и качество обработки трёхмерной сцены во многом зависят от совершенства инструкций, передаваемых приложением графическому ускорителю. Такие инструкции объединены в специализированные прикладные программные библиотеки (Graphics API). С одной стороны, инструкции должны учитывать особенности построения аппаратной части графического адаптера. С другой стороны, конструкция графического адаптера должна соответствовать возможностям API.
Точного соответствия между аппаратурой и API не бывает: иногда разработчики видеокарты опережают время и вводят функции, которые не поддерживаются действующими API. Часто в API появляются инструкции, которые не могут быть выполнены конкретным графическим адаптером. Поддержка API реализуется через драйвер видеокарты. Бывает, что разработчики игр пытаются использовать функции видеокарты, недоступные через стандартную версию API. В этом случае они создают собственные мини-драйверы.
Совокупность аппаратных и программных средств обработки трехмерных сцен образует графический конвейер, конечным итогом работы которого является кадр, размещенный на экране монитора. Ниже рассмотрены основные принципы работы такого конвейера.

Помогите организовать буфер вершин. 2D. DevilDevil (08.11.08 13:21).  4) Разбить буфер на "сегменты" пока 1 сегмент рисуется - второй заполняется.

Шесть этапов работы 3D-конвейера
Большинство приложений трехмерной графики, в том числе игр, при построении объемных сцен придерживаются определенной последовательности действий, в совокупности составляющей 3D-конвейер. Итогом работы 3D-конвейера является отрисовка ( рендеринг) результирующего изображения на дисплее компьютера. Группу операции, выполняющих обособленные промежуточные действия, принято называть этапом, или стадией 3D-конвейера. Описываемая ниже последовательность операций отнюдь не является жестко заданной, а скорее общепринятой в современных графических подсистемах. При конкретной реализации на программном и аппаратном уровнях могут появляться существенные отличия, однако смысловое содержание блоков практически не меняется. Итак, на сегодняшний день процесс визуализации трёхмерной сцены на экране компьютера выглядит в общих чертах следующим образом.
Первый этап
Здесь определяется состояние объектов, принимающих участие в сцене, которую необходимо отобразить. На первый взгляд к самой графике этот этап отношения не имеет. На самом деле он является определяющим, ибо состояние объектов и их взаимное положение формируют логику последующих действий программы. Напри­мер, если вашего персонажа в игре уже «убили», какой смысл вообще выводить трехмерную сцену? С каждым объектом в сцене связана соответствующая текущему моменту геометрическая модель. То есть объект один (например, некий монстр), но с ним сопоставляются разные геометрические модели в зависимости от состояния — жив, ранен, убит, трансформировался в другой объект и т. д. Практически все операции на первом этапе выполняет центральный процессор. Результаты его работы пересылаются в графический чипсет посредством драйвера.
Второй этап
Происходит декомпозиция (разделение на примитивы) геометрических моделей. Внешний вид объекта формируется с помощью набора определенных примитивов. Чаще всего в роли примитива выступает треугольник как простейшая плоская фигура, однозначно располагаемая в трехмерном пространстве. Все прочие элементы состоят из таких треугольников. Таким образом, можно утверждать, что по большей части термины «полигон» и «треугольник» применительно к игровой 3D-графике суть синонимы.
Современные графические процессоры умеют выполнять дополнительные операции, например тесселяцию (Tesselation), то есть разделение исходных треугольников на более мелкие. Некоторые графические чипсеты могут аппаратно обрабатывать геометрические модели, построенные на основе параметрических поверхностей (механизм RT-Patches). Часть графических процессоров умеет превращать плоские треугольники в трёхмерные поверхности путём «выдавливания» в третье измерение (механизм N-Patches).
Итоговый результат операций второго этапа пересылается в блок трансформаций и освещения (Transform&Lighting, T&L) геометрического процессора.
Третий этап
В блоке T&L на аппаратном уровне к вершинам треугольников применяют различные эффекты преобразований и освещённости. Содержание операций блоков T&L новейших графических чипсетов можно динамически изменять посредством вершинных шейдеров (Vertex Shaders) — специальных микропрограмм, включаемых в код игры. То есть сегодня персональный компьютер в дополнение к центральному процессору получил полноценный программируемый графический процессор. По завершении операций трансформации и расчёта освещённости параметры вершин нормализуются и приводятся к целочисленному виду.
Четвёртый этап
На данном этапе происходит так называемая установка примитивов (Triangle Setup). Графический процессор пока ничего не знает о свойствах треугольников, поскольку обрабатывал вершины по отдельности. Теперь необходимо «собрать» вершины в треугольники и преобразовать результаты в координаты и цвет каждого пиксела, а также отсечь невидимые области.
В ходе «сборки» определяется видимость объектов с позиции камеры. Полигоны, находящиеся ближе к камере, могут загородить более удалённые полигоны. Для хранения информации о степени удалённости объекта от плоскости проецирования используют специальный буфер глубины (Z-буфер). Современные графические процессоры применяют различные механизмы отсечения невидимых полигонов на ранних этапах 3D-конвейера с тем, чтобы избежать излишних операций. Данные буфера глубины обрабатываются специализированными блоками графического процессора. В конечном счете, на выходе блока геометрических преобразований получают проекцию трехмерной сцены на плоскость визуализации. Координаты и исходный цвет видимых пикселов передаются в текстурный конвейер (Texture Pipeline).
Пятый этап
Графический чипсет может иметь несколько параллельных текстурных конвейеров. В каждом из них происходит наложение текстур различного типа, в том числе и тех, которые сами не отображаются (например, карты высот), а служат для модификации других текстур. На этом этапе в современных чипсетах возможно исполнение пиксельных шейдеров (Pixel Shaders) — специальных микропрограмм, определяющих порядок смешивания текстур, полученных на выходе из каждого конвейера. Здесь также учитывается информация (полученная

Предположим, мы хотим нарисовать треугольник с точками (0,0), (2,2), (2,0). Тогда список индексов будет такой: 0, 1, 3 (счет начинается с 0). Буфер вершин.

Разобравшись с форматом вершин, мы создадим буфер.  Потом загрузим эти данные в буфер формата DirectX ID3D11Buffer.

Я звоню glDeleteTextures на мой текстуры IDs, но не видим какого-либо эквивалента в моей буферов вершин.