Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 27.06.2008, 13:15   #1
zheland
Разработчик
 
Регистрация: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

1 - нафиг
2 - для кубиков сойдет, и для анимированных (повершинно) моделей тоже. ито можно через шейдер делать.
3 - нафиг
4,5 - тоже что и 2, только лучше

не написал самого главного - рендер из VBO. зачем постоянно гонять данные по шине? можно их записать в память видюхе и рисовать прям оттуда.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 14:03   #3
jimon
 
Сообщений: n/a
Ответ: OpenGl—Оптимизация для скорости и качества

а можно чтобы .. к примеру геометрический шейдер рисовал кубик без никаких входящих данных ?
 
Ответить с цитированием
Старый 27.06.2008, 14:10   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

вроде можно. но точно не скажу.
триугольник нарисовать точно можно. входные данные... хз, наверно все же что то на вход подавать надо.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 14:11   #5
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

А можно всё-таки поподробнее про все режимы
И про рендер из VBO попоробнее.
(Надо учесть, что мне хочется создать игру с часто изменяющимся миром)
(Например: Дерево+Пулемёт=2 части дерева)
(Или: Стекло+1 пуля=Стекло с дыркой и расходящимися трещинами)
(Или: Стекло+20 пуль=Разлетащиеся осколки и остатки стекла по краям)
(Таблицы отображений наверно отпадают)
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 14:30   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

будеш менять модели.
т.е у тебя должна быть модель целого дерева и несколько моделей - частей етого дерева. трещины (и дырки) в стекле - делаются текстурой.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 15:55   #7
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Сообщение от HolyDel Посмотреть сообщение
будеш менять модели.
т.е у тебя должна быть модель целого дерева и несколько моделей - частей етого дерева.
Нет я хочу что-бы дерево ломамось именно там где сломали
Преставь сколько кусочков:дерево—20;ветка—10;
дерево и ветки — считай.
Потом зачем знать как выглядит разлом(лишняя память):
Нельзя-ли его сгенерировать самому когда надо.
А если стрелять постоянно оно разлетится на щепки.
А если кувалдой ударить по бочке:будет прогиб:как такой предугадать?

У меня будет свой формат моделей:
Под него будет подстроен мой движок;
Формат будет иметь физические свойства тела.
А так-же анимацию и.т.д..

Последний раз редактировалось jimon, 27.06.2008 в 20:55.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 16:22   #8
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

Сообщение от drunnik Посмотреть сообщение
У меня будет свой формат моделей:
Под него будет подстроен мой движок;
Формат будет иметь физические свойства тела.
А так-же анимацию и.т.д..

У меня будет свой формат
У меня будет свой движок
У меня будет своя физика
У меня будет своя скилетная анимация
У меня будет своя игра для самого себя...

Не обижайся, это я просто так ворчу
__________________
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 16:30   #9
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

тут я бессилен что либо посоветовать )) на самом деле смотри - вот есть у тебя бочка - ее сетка должна хранится в видеопамяти. в момент изминения сетки (по ней ударили молотком) секту можно рисовать динамически, из системной памяти - когда бочка прекратила деформирвоаться - ее нужно опять отправить в видеопамять, чтобы она рисовалась оттуда.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 16:33   #10
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

Сообщение от dimanche13 Посмотреть сообщение

У меня будет свой формат
У меня будет свой движок
У меня будет своя физика
У меня будет своя скилетная анимация
У меня будет своя игра для самого себя...

Не обижайся, это я просто так ворчу
И ты не обижайся:
Просто когда я увидел один формат я ужаснулся:
(Что-то вроде такого)
14006 12829 10877
27721 24600 900
Написано цифрами
Это можно было записать 12-байтами(Short), а здесь 35
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 16:37   #11
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

Насчёт бочки:
сетки почти не будет: она будет генерироваться при ударе.
(Удалятся старые большие квадраты,
и на их месте новые точки итреугольнички)
Экономлю память
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 16:37   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

у меня так ))) загрузку сделать проще. только не шортами в флоатами.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 20:58   #13
jimon
 
Сообщений: n/a
Ответ: OpenGl—Оптимизация для скорости и качества

drunnik
если хочешь свой формат с доп данными
то напиши к нему редактор с возможностью импортить
и експортить в разные форматы, иначе никто модельку не сможет
в него перевести
 
Ответить с цитированием
Старый 28.06.2008, 01:38   #14
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

Сообщение от jimon Посмотреть сообщение
drunnik
если хочешь свой формат с доп данными
то напиши к нему редактор
Обязательно!
(мой формат—.zpk—ZhelezkaPak—
—как архив будет содержать различные данные)
Сообщение от jimon Посмотреть сообщение
с возможностью импортить
и експортить в разные форматы, иначе никто модельку не сможет
в него перевести
(почти)Всё я буду делать ручками.
(почти: некоторые вещи редактор будет генерировать сам:
самое простое—камни; но деревья тоже будет сам создавать)
Если моделька хорошая конечно поделюсь
(Offline)
 
Ответить с цитированием
Старый 28.06.2008, 11:31   #15
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Ответ: OpenGl—Оптимизация для скорости и качества

А где достать новейший OpenGl?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сила Скорости FDsagizi Проекты C++ 17 01.01.2009 13:26
Определение количества оперативной памяти LD 3D-программирование 3 27.07.2007 15:11
С Днем Защитника Отечества! Тарас Шевченко Поздравления и пожелания 12 25.02.2007 20:57
оптимизация коннекта impersonalis 2D-программирование 4 11.12.2006 01:18
Соотношение количества полигонов... AnRee 3D-программирование 6 12.10.2005 13:19


Часовой пояс GMT +4, время: 00:01.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com