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

Меш отображается с дырками. OpenGL

Страницы: 1 2 Следующая »
#0
1:46, 21 мая 2012

Добрый день.
Прошу не ругаться, если подобная тема уже создавалась, я честно гуглил и не нашёл ничего похожего :(
Проблема в том, что при выводе obj-модели через glDrawArrays в ней возникают такие вот пробелы
скрин

Если же вывод осуществлять через glVertex - то данных проблем не возникает. Что я делаю не так?


#1
2:38, 21 мая 2012

ScforeveR
> Если же вывод осуществлять через glVertex - то данных проблем не возникает
Похоже что первый параметр фунции glDrawArrays установлен неправильно.

#2
10:11, 21 мая 2012

К сожалению смена triangle-strip на triangles тоже не дает результата, только исчезают соединения между лапами зверя.

#3
10:29, 21 мая 2012

Может неправильное смещение на данные и все вершины едут или некорректно считанные данные.
Потом, может нужно задать или вообще отключить отсечение задних/передних граней CW, CСW ?

#4
10:31, 21 мая 2012

Приведи кусок кода формирования и отрисовки буфера glDrawArrays.

Большая вероятность, что у тебя там ошибка

#5
10:49, 21 мая 2012

Скрин жжот. Специально уменьшал?

#6
23:37, 23 мая 2012

Нет, не специально, так получилось.. :)

haper
(defun draw()
(gl:enable-client-state :vertex-array)
(gl:enable-client-state :normal-array)
(gl:vertex-pointer :float 0 v-arr) // v-arr - массив вершин
(gl:normal-pointer :float 0  n-arr)
(gl:draw-arrays :triangle 0 (length v-arr))
(gl:disable-client-state :normal-array)
(gl:disable-client-state :vertex-array)
)

Warn
Ну, у меня данные пока хранятся в разных массивах, потому смещений как таковых нет..
А, вот насчет отсечения- сейчас попробую)

#7
1:38, 24 мая 2012

Очень часто получал подобные артефакты. Это либо перчисление (gl_triangle_strip/gl_triangles) неправильное, либо криво установленные атрибуты, либо криво заполненный буфер с данными.

upd. Отчечения тут не помогут. На время отладки вообще рекомендую отключить отсечение + включить Z буфер. А то порой можно втыкать почему вообще ничего не вижу, или почему от собаки только уши, а там просто нормали вывернутые :)

#8
7:04, 24 мая 2012

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

#9
8:11, 24 мая 2012

ScforeveR
> (defun draw()
> (gl:enable-client-state :vertex-array)
> (gl:enable-client-state :normal-array)

Это какой язык ?

#10
9:18, 24 мая 2012

innuendo
> Это какой язык ?

Ацки похоже на common lisp.

#11
10:28, 24 мая 2012

=A=L=X=
> Ацки похоже на common lisp.

вот и меня терзают смутные сомнения :)

#12
20:20, 24 мая 2012

Спасибо, сейчас попробую отключить z-буфер и посмотрю что получилось :)

Suslik
При загрузке куба - он почему-то схлопывается в пирамиду. Хотя все вершины считываются нормально и этот же самый массив отображаемый через vertex -  выводится нормально.

Да, это он самый- common lisp :)

А, вот не может быть это из-за различий чтения/заполнения массивов. Что он например начинается с 0 элемента, а должен, к примеру с 1-го?

#13
20:24, 24 мая 2012

ScforeveR
включить, а не отключить. И включение никак не пофиксит багу, а нужно для того, чтобы если вдруг бага пофиксится не сидеть и не вдуплять почему криво (из-за отключенного Z буфера)

> При загрузке куба - он почему-то схлопывается в пирамиду. Хотя все вершины считываются нормально и этот же самый массив отображаемый через vertex - выводится нормально.
что значит отображаемый через vertex? покажи свой куб пирамиду

#14
3:07, 25 мая 2012

MrShoor
Да, отпечатался, конечно включить :)

Ну, в том смысле, что если выводить модель куба через gl:vertex, то она отрисовывается нормально, хотя использует один и тот же исходный массив.

Сейчас нет возможности, завтра доберусь до интернета и выложу.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

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