|
27.06.2008, 13:15
|
#1
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
OpenGl—Оптимизация для скорости и качества
OpenGl—Оптимизация для скорости и качества
Вот много вариантов рисования кубов,
Какой из них тратит меньше памяти, какой быстрее, какой когда применять?
(Если есть ещё варианты, тоже скажите чем отличаются.)
(Тут приведён простейший вариант, но хотелось-бы услышать какой вариант будет лучше в более крупных проектах.)
1(Рисование готовыми glut объектами):
//В главном цикле
glutSolidCube(10);
2(Самое обычное рисование):
//В главном цикле
glBegin(GL_QUADS);
glVertex3b(0,0,0);
glVertex3b(10,0,0);
glVertex3b(10,10,0);
glVertex3b(0,10,0);
glVertex3b(0,0,10);
glVertex3b(10,0,10);
glVertex3b(10,10,10);
glVertex3b(0,10,10);
glVertex3b(0,0,0);
glVertex3b(10,0,0);
glVertex3b(10,0,10);
glVertex3b(0,0,10);
glVertex3b(0,10,0);
glVertex3b(10,10,0);
glVertex3b(10,10,10);
glVertex3b(0,10,10);
glVertex3b(0,0,0);
glVertex3b(0,10,0);
glVertex3b(0,10,10);
glVertex3b(0,0,10);
glVertex3b(10,0,0);
glVertex3b(10,10,0);
glVertex3b(10,10,10);
glVertex3b(10,0,10);
glEnd();
3(Таблицы отображений):
//Перед главным циклом
glNewList(cube_list, GL_COMPLITE);
glBegin(GL_QUADS);
glVertex3b(0,0,0);
glVertex3b(10,0,0);
glVertex3b(10,10,0);
glVertex3b(0,10,0);
...
glEnd();
glEndList();
//В главном цикле
CallList(cube_list);
4(Массивы GLTVector):
//Перед главным циклом
GLTVector3 cube_list[24];
cube_list[0][0]=(GLubyte)0;
cube_list[0][1]=(GLubyte)0;
cube_list[0][2]=(GLubyte)0;
cube_list[0][0]=(GLubyte)10;
cube_list[0][1]=(GLubyte)0;
cube_list[0][2]=(GLubyte)0;
...
//В главном цикле
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_UNSIGNED_BYTE,0,cube_list);
glDrawArrays(GL_QUADS,0,24);
5(Индексированные массивы):
//Перед главным циклом
GLubyte cube_list_pnt[]={0,10,10, 10,10,10, 10,0,10, 0,0,10 0,10,0, 10,10,0, 10,0,0 0,0,0};
GLubyte cube_list_ind[]={0,1,2,3, 4,5,1,0, 3,2,6,7, 5,4,7,6, 1,5,6,2, 4,0,3,7};
//В главном цикле
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_UNSIGNED_BYTE,0,cube_list_pnt);
glDrawElements(GL_QUADS, 24,GL_UNSIGNED_BYTE,cube_list_ind);
p.s.:Возможно есть ошибки: исправьте.
|
(Offline)
|
|
27.06.2008, 13:55
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
1 - нафиг
2 - для кубиков сойдет, и для анимированных (повершинно) моделей тоже. ито можно через шейдер делать.
3 - нафиг
4,5 - тоже что и 2, только лучше
не написал самого главного - рендер из VBO. зачем постоянно гонять данные по шине? можно их записать в память видюхе и рисовать прям оттуда.
|
(Offline)
|
|
27.06.2008, 14:03
|
#3
|
|
Ответ: OpenGl—Оптимизация для скорости и качества
а можно чтобы .. к примеру геометрический шейдер рисовал кубик без никаких входящих данных ?
|
|
|
27.06.2008, 14:10
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
вроде можно. но точно не скажу.
триугольник нарисовать точно можно. входные данные... хз, наверно все же что то на вход подавать надо.
|
(Offline)
|
|
27.06.2008, 14:11
|
#5
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
А можно всё-таки поподробнее про все режимы
И про рендер из VBO попоробнее.
(Надо учесть, что мне хочется создать игру с часто изменяющимся миром)
(Например: Дерево+Пулемёт=2 части дерева)
(Или: Стекло+1 пуля=Стекло с дыркой и расходящимися трещинами)
(Или: Стекло+20 пуль=Разлетащиеся осколки и остатки стекла по краям)
(Таблицы отображений наверно отпадают)
|
(Offline)
|
|
27.06.2008, 14:30
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
будеш менять модели.
т.е у тебя должна быть модель целого дерева и несколько моделей - частей етого дерева. трещины (и дырки) в стекле - делаются текстурой.
|
(Offline)
|
|
27.06.2008, 15:55
|
#7
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Сообщение от HolyDel
будеш менять модели.
т.е у тебя должна быть модель целого дерева и несколько моделей - частей етого дерева.
|
Нет я хочу что-бы дерево ломамось именно там где сломали
Преставь сколько кусочков:дерево—20;ветка—10;
дерево и ветк и — считай.
Потом зачем знать как выглядит разлом(лишняя память):
Нельзя-ли его сгенерировать самому когда надо.
А если стрелять постоянно оно разлетится на щепки.
А если кувалдой ударить по бочке:будет прогиб:как такой предугадать?
У меня будет свой формат моделей:
Под него будет подстроен мой движок;
Формат будет иметь физические свойства тела.
А так-же анимацию и.т.д..
Последний раз редактировалось jimon, 27.06.2008 в 20:55.
|
(Offline)
|
|
27.06.2008, 16:22
|
#8
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
Сообщение от drunnik
У меня будет свой формат моделей:
Под него будет подстроен мой движок;
Формат будет иметь физические свойства тела.
А так-же анимацию и.т.д..
|
У меня будет свой формат
У меня будет свой движок
У меня будет своя физика
У меня будет своя скилетная анимация
У меня будет своя игра для самого себя...
Не обижайся, это я просто так ворчу
|
(Offline)
|
|
27.06.2008, 16:30
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
тут я бессилен что либо посоветовать )) на самом деле смотри - вот есть у тебя бочка - ее сетка должна хранится в видеопамяти. в момент изминения сетки (по ней ударили молотком) секту можно рисовать динамически, из системной памяти - когда бочка прекратила деформирвоаться - ее нужно опять отправить в видеопамять, чтобы она рисовалась оттуда.
|
(Offline)
|
|
27.06.2008, 16:33
|
#10
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
Сообщение от dimanche13
У меня будет свой формат
У меня будет свой движок
У меня будет своя физика
У меня будет своя скилетная анимация
У меня будет своя игра для самого себя...
Не обижайся, это я просто так ворчу
|
И ты не обижайся:
Просто когда я увидел один формат я ужаснулся:
(Что-то вроде такого)
14006 12829 10877
27721 24600 900
|
Написано цифрами
Это можно было записать 12-байтами(Short), а здесь 35
|
(Offline)
|
|
27.06.2008, 16:37
|
#11
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
Насчёт бочки:
сетки почти не будет: она будет генерироваться при ударе.
(Удалятся старые большие квадраты,
и на их месте новые точки итреугольнички)
|
(Offline)
|
|
27.06.2008, 16:37
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
у меня так ))) загрузку сделать проще. только не шортами в флоатами.
|
(Offline)
|
|
27.06.2008, 20:58
|
#13
|
|
Ответ: OpenGl—Оптимизация для скорости и качества
drunnik
если хочешь свой формат с доп данными
то напиши к нему редактор с возможностью импортить
и експортить в разные форматы, иначе никто модельку не сможет
в него перевести
|
|
|
28.06.2008, 01:38
|
#14
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
Сообщение от jimon
drunnik
если хочешь свой формат с доп данными
то напиши к нему редактор
|
Обязательно!
(мой формат—.zpk—ZhelezkaPak—
—как архив будет содержать различные данные)
Сообщение от jimon
с возможностью импортить
и експортить в разные форматы, иначе никто модельку не сможет
в него перевести
|
(почти)Всё я буду делать ручками.
(почти: некоторые вещи редактор будет генерировать сам:
самое простое—камни; но деревья тоже будет сам создавать)
Если моделька хорошая конечно поделюсь
|
(Offline)
|
|
28.06.2008, 11:31
|
#15
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: OpenGl—Оптимизация для скорости и качества
А где достать новейший OpenGl?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:30.
|