Местность ссылок имеет значение, но вам не нужно так сильно беспокоиться ... потому что вы не имеете абсолютного контроля.
При использовании OpenGL / DirectX вы обычно имеете ограниченный контроль над макетом памяти, остальное сделает драйвер. Например, вы можете попробовать несколько макетов буферов вершин, таких как использование данных вершин с чередованием или без чередования, и в зависимости от производительности ваших данных / драйвера / графического процессора будет зависеть. Профиль и выберите то, что лучше всего подходит для вашего приложения.
Например, при оптимизации GPU Gems Pipeline местность ссылок упоминается дважды , первая:
Доступ к данным вершин относительно последовательным образом. Современные графические процессоры обращаются к кеш-памяти при извлечении вершин. Как и в любой иерархии памяти, пространственная привязка помогает максимизировать попадания в кэш, тем самым снижая требования к пропускной способности.
А второй
Оптимизировать для кэша вершин после T & L. Современные графические процессоры имеют небольшой кэш «первым пришел - первым вышел» (FIFO), в котором хранятся результаты самых последних преобразованных вершин; попадание в этот кэш сохраняет всю работу по преобразованию и освещению, а также всю работу, выполненную ранее в конвейере. Чтобы воспользоваться преимуществами этого кэша, вы должны использовать индексированные примитивы и упорядочить вершины, чтобы максимизировать локальность ссылок по сетке. Доступны инструменты, в том числе D3DX и NVTriStrip (NVIDIA 2003), которые могут помочь вам в этой задаче.
По моему мнению, эти рекомендации следуют тому, о чем я говорил, и подразумевают, что вы не имеете абсолютного контроля над макетом памяти, но то, что вы контролируете, например, как выложены все вершины VBO, может влиять на производительность.
Если ваше приложение испытывает снижение производительности, сначала вы должны обнаружить узкое место, это может быть не проблемная локальность ссылок на данные, но это может быть связано с тем, что существует огромное количество данных без отбраковки, например, вы не выполняете отбраковку усеченного конуса. и т.д. Вы можете проверить мой ответ здесь по теме.
Я думаю, что вам следует больше беспокоиться о локальности ссылок при использовании OpenCL / CUDA, где вы часто имеете абсолютный контроль над макетом памяти.