Войти
ПрограммированиеФорумГрафика

Случайные точки при использовании VBO

#0
17:54, 9 апр. 2013

При попытке отображения каких либо объектов (в частности точки) с помощью VBO, наблюдается странное поведение программы: появляются случайные точки при отображении. Например нижняя окружность нарисована при помощи glBegin/glEnd. Верхняя окружность отображена из массива координат, который так же используется и для VBO. А центральная окружность отображена с помощью VBO, но добавились еще и случайные точки которых в массиве координат нет. Остаются неясными причины появления этих случайных точек.  Помогите найти причины появления и метод избавления.
Вот что рисуется:
VBO_errror | Случайные точки при использовании VBO

Вот часть программы в которой происходит рисование:

+ Показать

А расширение подключаю следующим способом:

+ Показать


#1
18:45, 9 апр. 2013

Dionysus
> ////////////////////////////////////////////////////// Запись значений в
> for i :=0 to MaxArr do // массив координат.
> begin // MaxArr = 10000
> if (i mod 2)=0 then //
> begin //
> TEST_ARR[i] := Sin(i)*100; //
> TEST_ARR[i+1] := Cos(i)*100; //
> end; //
> end;
индусский код детектед

Dionysus
> glVertexPointer(2, GL_FLOAT, 0, nil );
Кажется, stride не 0 должен быть, а sizeof(float) * 2

#2
18:45, 9 апр. 2013

Dionysus
Я надеюсь, мне показалось, что ты VBO каждый кадр создаешь заново?

#3
18:47, 9 апр. 2013

StiX
> Кажется, stride не 0 должен быть, а sizeof(float) * 2
Нет. "If stride is 0, the vertices are understood to be tightly packed in the array."

#4
18:49, 9 апр. 2013

Dionysus
> glDrawArrays(GL_POINTS , 0, MaxArr);
А вот и ответ. Что должен показывать третий  параметр?

#5
19:07, 9 апр. 2013
Я надеюсь, мне показалось, что ты VBO каждый кадр создаешь заново?

Не показалось, так и есть. Если так не делать то ничего не отображается.
> glDrawArrays(GL_POINTS , 0, MaxArr);
А вот и ответ. Что должен показывать третий  параметр?

Все сразу стало на свои места =) Спасибо!
#6
20:55, 9 апр. 2013

Dionysus
>Не показалось, так и есть. Если так не делать то ничего не отображается.
Охеренное решение проблемы )
Программист - маг это круто, пошаманил, пошаманил, как работает - хз, главное что работает )

#7
21:48, 9 апр. 2013

Dionysus
Всё, что можно создать и посчитать, делай ДО отрисовки, а не в ней :)
Посчитай свои 40к синусов один раз ДО отрисовки, а не во время каждого кадра.
Создай VBO один раз ДО отрисовки. И твой fps увеличится в разы.

#8
21:52, 9 апр. 2013

Dionysus
> Не показалось, так и есть. Если так не делать то ничего не отображается.

Мда... Это так реформа Фурсенко повлияла ? :):):)

ПрограммированиеФорумГрафика

Тема в архиве.

Тема закрыта.