tuning3d_01

[lang_ru]До сегодняшнего момента я придерживался некоторых стереотипов касательно способа вывода геометрии средствами OpenGL, которые после проведения ряда тестов пришлось развеять.[/lang_ru]

[lang_en]Until now, the moment I took some of the stereotypes about how to draw the geometry means OpenGL, which after a series of tests had to be overcome.

[/lang_en]

[lang_ru]Первый мой стереотип был сформирован порядка 7 лет назад, когда я геометрию представлял в виде связанных треугольников для увеличения производительности. Для этого я использовал библиотеку ACTC — http://www.plunk.org/~grantham/public/actc/

Сегодня же я решил замерить скорость вывода связанными треугольниками и обычными треугольниками и получил во втором случае прирост производительность в пять раз. Видимо это связанно с тем, что при связанных треугольниках гораздо больше вызовов glDrawElements, а эти вызовы получается весьма дорогими.

Второй мой стереотип с тех же времен по использованию функции glInterleaved, на деле на сегодняшний день гораздо быстрее использовать фукнции glPointer***

? на поседок хотел бы поделится советом по использованию индексного буфера и команды glDrawElements.

Возникла такая ситуация — у меня индексный буфер большой, я из него беру куски для рисования glDrawElements, следовательно возникается необходимость задавать отступ. Так вот, если скажем переменная unsigned int offset содержит значение отсутпа в байтах для рисования примитивов, то при использовании с glDrawElements нельзя ни в коем случае давать указатель на эту переменную, а нужно её тип самым обычным способом переводить:

glDrawElements(…, …, …, (GLvoid*) offset );

[/lang_ru]

[lang_en]My first stereotype was formed about 7 years ago when I represented the geometry in the form of triangles strips related to increase productivity. I used the library ACTC — http://www.plunk.org/ ~ grantham / public / actc /

Today, I decided to measure the speed of the output triangles strips and regular triangles and received in the second case, the increase up to five times! Apparently this is connected with the fact that connected triangles are much more challenges with glDrawElements, but these calls are very expensive.

My second stereotype with the same time to use the function glInterleaved, in fact, to date, much faster to use function glPointer ***

Also I would like to share advice on the usage of an index buffer and the glDrawElements call.
There was a situation — I have a big index buffer. I take pieces of it to draw with glDrawElements, hence there is a need to specify the data offset in the buffer. So when we say that a variable «unsigned int offset» contains a value in bytes of the offset, we need not to put the pointer to this variable in glDrawElements, we need to simply cast variable type like this:

glDrawElements(…, …, …, (GLvoid*) offset );

[/lang_en]

[lang_en]VBO tips and tricks[/lang_en][lang_ru]Советы по VBO[/lang_ru]
Метки:            

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *