OpenGL отрисовка молекул

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

OpenGL отрисовка молекул

Сообщение lellel » 16.05.2010 (Вс) 16:55

возможно я немного не в тему этот тут пишу, ибо проект не на VB, но так повелось, что как правило на свои вопросы по графике нахожу тут ответы..
проект - модель газа. требуется отрисовывать молекулы.
сейчас остановился на варианте, рисовать партиклами, получается при 10000 частиц около 20фпс(но это без рассчета передвижения молекул, просто статические 10000 партиклов). но это только после отключения вертикальной синхронизации.
использую OpenGL, и опыта особо нет, раньше только DirectX использовал.
что можно еще сделать чтобы повысить производительность?
(если это что-то вам скажет, предполагается рассчитывать молекулы на OpenCl, опыта особо опять таки нет, может с этим еще какие то косяки возникнут)

кстати карта GeForce 7500

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: OpenGL отрисовка молекул

Сообщение Хакер » 16.05.2010 (Вс) 17:41

Предкомпилированные списики используются?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: OpenGL отрисовка молекул

Сообщение lellel » 16.05.2010 (Вс) 18:21

видимо нет, а что это?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: OpenGL отрисовка молекул

Сообщение Хакер » 16.05.2010 (Вс) 18:36

Одна из фишек OpenGL: компилируемые списки программ.

Например, тебе нужно нарисовать 6 ромбов, для рисования которых необходимо нарисовать 4 линии.

Ты можешь сделать что-то вроде:
Код: Выделить всё
for(i = 1 to 6)
{
     line1();
     line2();
     line3();
     line4();
}


А можешь эти 4 вызова записать в список и вызывать список внутри цикла. Смысл в том, что вызовы команд компилируются и оптимизируются, и вызывать список из 4 команд быстрее, чем вызывать 4 команды.

Ну и вызовы списком, соответственно, можно записывать в другие списки.

Подробнее.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: OpenGL отрисовка молекул

Сообщение lellel » 16.05.2010 (Вс) 23:14

попробовал, но прироста фпс нет(
имеет ли смысл их использовать, если я рисую частицы?
Код: Выделить всё
glBegin(GL_POINTS);
glVertex3f(*(x+i), *(y+i), -*(z+i));
glEnd();

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: OpenGL отрисовка молекул

Сообщение Хакер » 17.05.2010 (Пн) 1:20

Заносить в список одну команду нет смысла. Есть смысл, если для рисования одной частицы ты используешь 500 команд, занести их в список и вызывать его.

И не заменить ли тебе *(x+i) на x[i]? И не хранить бы тебе массив радиус-векторов, а не три массива для хранения их координат?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: OpenGL отрисовка молекул

Сообщение lellel » 17.05.2010 (Пн) 13:32

*(x+i) и x[i] разве не одно и то же значит? я думал это только разные формы записи..
на счет координат, тот кусок пишу не я, и не я так придумал.. мотивация была, вроде на OpenCl нельзя использовать структуры..

а по поводу частиц нет таки новых идей?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: OpenGL отрисовка молекул

Сообщение Хакер » 17.05.2010 (Пн) 14:32

Одно и то же, но читаемость у второго лучше.

А вот неиспользование структур сильно давит на производительность. OpenGL или CL? Насчёт CL не знаю, а вот насчёт GL — это бред.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: OpenGL отрисовка молекул

Сообщение lellel » 17.05.2010 (Пн) 14:41

про читаемость не задумывался, это просто в привычку уже вошло) исправим..

именно CL..

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: OpenGL отрисовка молекул

Сообщение Хакер » 17.05.2010 (Пн) 14:53

Когда ты читаешь ячейку памяти, фактически, читается не только эта ячейка, а большой блок смежный с ней. И он (блок) помещается в процессорный кэш.
Когда ты читаешь следующую ячейку, долгого обращения к памяти не происходит — следующая ячейка берётся из процессорного стека.

Поэтому обращаться к v[i].x, а затем к v[i].y — быстрее, чем к x[i], а затем к y[i].
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList