![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Nikonik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
Казалось бы простая задача - а найти не могу
Есть трехмерная матрица M[][][] сейчас я ее вывожу набором вложенных for и рисую куб если в матрице не ноль. по отрисовке перемещаюсь gl_translatef, после каждого блока for возращаю на суммарный сдвиг При размере матрицы до 40 -- FPS еще держится на уровне 30-40, даже уже при размере 64 начинаются дикие тормоза - 3-4 FPS. (я вращаю матрицу) Я использую библиотеку GLUT. При GLAUX ситуация чуть лучше. но не намного. Хочется выводить матрицы размером хотя бы до 256. Матрица создается в начале программы и больше не меняется Возможно как-то можно загнать эту структуру в единый объект, или прорисовывать только видимые кубы? Подскажите, пожалуйста. Это сообщение отредактировал(а) Nikonik - 21.3.2007, 13:13 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Размер матрицы - это что? Ты же сказал, что у тебя трёхмерная матрица.
В любом случае, делай так: получай все вершины все х объектов в один массив такого типа: x1, y1, z1, x2, y2, z2 и используй glDrawElements. Как его юзать, читай progz.ru -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Nikonik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
Размер матрицы это количество элементов в одной грани
матрицы размером до 256 - это 256х256х256 glDrawElements начал читать.... |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Ну тогда делаешь так:
Вычисляешь по размеру матрицы координаты вершин куба. По сути у тебя каждая ячейка - это куб. Следовательно тебе нужно просто получить точки (если матрица 3х3х3) вершин 27 кубов. Загоняешь их в один массив, отрисовываешь через drawElements или drawArray, затем ставишь по местам текст со значениями каждой ячейки. Но быстрее будет, если ты будешь работать с текстом, как с полигонами, имея их вершины и выводя также через drawArray или drawElements. ЗЫ progz.ru - там перевод красной книги openGL. Очень советую сохранить всё это дело, хороший справочник выходит. Ещё достань книгу Анджела "Программирование графики на opengl", там много мат. трюков и этого тебе хватит на реализацию и понятие азов минимум половину алгоритмов. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Nikonik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
попробовал DrawElements - действительно быстрее, но заодно прочитал и о такой вещи как VBO - она должна еще более ощутимый прирост
а как определить порядок вершин? по-моему тут это главная задача не понял о каком тексте идёт речь не понял про красную книгу, но progz, читать начал |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Есть такая штука - красная книга ogl, там расписаны принципы функционирования его. Так вот: на progz.ru - это перевод этой самой книги.
Порядок на сколько мне известно значения не имеет. Главное чтобы в памяти лежало так, как ты укажешь в параметрах, при вызове функций. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| FIaR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.11.2006 Репутация: 2 Всего: 2 |
Если юзаеш DrawElements (даже если и drawArray) то порядок вершин имеет весомое значение!
--------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой. |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
FIaR, и какое?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Nikonik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
Порядок, как оказалось, имеет значение если использовать culling - я целый час перебирал вершины пока сделал так что кубики видны со всех сторон.
С VBO пока не лады.. не могу найти толкового объяснения. |
|||
|
||||
| betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
--------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
betal, какой пример ещё?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
на то что получилось.
Это сообщение отредактировал(а) betal - 19.4.2007, 21:26 --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
| Nikonik |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.3.2007 Репутация: нет Всего: нет |
Sorry, на форум не заходил
Нашел через поисковик - google top по запросу "glaux вывод FPS" - что подтвержает, что мало все-таки литературы по gl в рунете. С неплохими задержками люди примеры хотят, получилось вот так: Вершины шестиугольников (в моей пркиладной задаче - шестиугольники)
Вывод:
В main не забыть привязать:
и отвязать
дополнительно ради чего мучался с порядком обхода - culling
Ну и еще ускорение за счет разрежености матриц + линеаризация трехмерного массива в одномерный M. |
||||||||||
|
|||||||||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |