Что такое быстрый алгоритм для преобразования матрицы квадратов в треугольную полосу? - PullRequest
1 голос
/ 19 октября 2010

Представьте себе квадрат 4x4 с 16 квадратами меньшего размера внутри, со связанными данными о том, как должны выглядеть квадраты (т.е. непрозрачность, цвет и т. Д.).

Существует ли существующий эффективный алгоритм для преобразования этого набора квадратов в треугольную полоску, совместимую с открытым gl? *

1 Ответ

1 голос
/ 20 октября 2010

Я не уверен, что правильно понимаю геометрию, которую вы пытаетесь визуализировать.Если это вид сетки, вот как я бы это сделал:

Создание и заполнение объекта буфера вершин всеми вашими вершинами:

8--9--a--b
| /| /| /|
|/ |/ |/ |
4--5--6--7
| /| /| /|
|/ |/ |/ |
0--1--2--3

Создание и заполнение буфера массива элементов с помощьюиндексы, используемые для рендеринга вашей четырехугольной сетки:

{ 0,1,5,4, 1,2,6,5, 2,3,7,6, 4,5,9,8, 5,6,a,9, 6,7,b,a }

Установите все, используя gl * Pointer, используйте glDrawElements с GL_QUADS для рендеринга.Кеш вершин будет обрабатывать уже преобразованные вершины: каждый квад после первой будет требовать преобразования только двух вершин.

Я не думаю, что вы получите что-нибудь, если вы tri-strip или quad-strip it, за исключением некоторой памяти в буфере массивов элементов.

Если вы хотите удалить его, создайте соответствующий буфер массивов элементов и вызовите glDrawElements для каждой строки.Это можно сделать за один вызов, используя только расширение Nvidia GL_NV_primitive_restart

Если это не сетка, вы можете попробовать NvTriStrip .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...