![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
opengl2 треугольники
DoKi © (2008-02-27 07:36:00)как на opengl2 выводить сразу много треугольников 10000 100000 1000000?????????
вот например
/////////////////////////////////////////
Vertex : Array .....//массив
glVertexPointer(3, GL_FLOAT, 0, @Vertex);
glEnableClientState(GL_VERTEX_ARRAY);
glColor3ub(255,0,0);//цвет
glDrawArrays(GL_TRIANGLES, 0, 3000);// рисуем 3000 триуголиников
////////////////////////////////////////////////
программа компилируется а на экране пусто
SCRIMERS (2008-08-20 19:33:00) [1]всё разобрался сам- спасибо. ВСЕМ КТО НЕ ЗНАЕТ КАК ЭТО СДЕЛАТЬ ПРОШУ СЮДА http://www.delphimaster.ru/cgi-bin/forum.pl?id=1179836491&n=9
SCRIMERS (2008-08-20 18:21:00) [2]Вопрос, а что за ОГЛ такой, что команды glGenBuffersARB и все на *ARB имеются? Например у меня такие команды ни в одном заголовочном файле не имеется: ни в Глуте, ни даже в ОГЛ - та вообще нет нигде.
Напишите мне пожалуйста объявления этих функций (ВБО) или где можно их вообще взять, или где можно взять "новый" заголовочный файл ОГЛ или ГЛУТ.
Сразу говорю, что ресурсы типа www.mirgames.ru не катят, ибо читаю ту статью по VBO я и пришел сюда.
Я программирую на Делфи 6, стандартные библиотеки ГЛУТ и ОГЛ. Заранее Спасибо.
@!!ex (2008-02-27 20:40:00) [3]Короч вот кусок кода из моего проекта:
инициализация:
glGenBuffersARB(1,@Mesh[MeshIndex].VBO);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,Mesh[MeshIndex].VBO);
glBufferDataARB(GL_ARRAY_BUFFER_ARB,Mesh[MeshIndex].F_Count*3*sizeof(TOTMVertex) ,@Buffer[0],GL_STATIC_DRAW_ARB);
отрисовка:
glBindBufferARB(GL_ARRAY_BUFFER_ARB,VBO);
glVertexPointer(3,GL_FLOAT,SizeOf(TOTMVertex),Pointer(0));
glNormalPointer(GL_FLOAT, SizeOf(TOTMVertex), Pointer(Sizeof(TVector)));
glTexCoordPointer(2, GL_FLOAT, SizeOf(TOTMVertex), Pointer(Sizeof(TVector)*2));
glDrawArrays(GL_TRIANGLES, 0, F_Count*3);
DoKi (2008-02-27 20:35:00) [4]зполнение отсутствует - просто я не смог его в исходнике найти
@!!ex (2008-02-27 20:15:00) [5]Короче, для тех, кому влом читать о VBO.
VBo - Vertex Buffer Object
Как понятно из названия - это вершинный буффер.
Суть данного расширения в том, что оно позволяет хранить массивы вершин в ВИДЕО памяти, что существенно ускоряет скорость рендера больших объектов(т.к. не приходится пересылать данные между обычной память и видеопамятью).
Суть инициализации сводится к генерации уникального имени буффера, установки текущего буффера, его заполнение(отсутствует в [8]).
Рендеринг сводится к установке текущего буффера и рендеру.
@!!ex (2008-02-27 20:10:00) [6]> да понимаю
Ну расскажи?
DoKi (2008-02-27 19:35:00) [7]да понимаю
а код конешно не полный
вот исходник
www.delphisources.ru/pages/sources/graph/2007_year/igrodel_shaders.html
папка sceleton модуль _render.pas
тока мне нужно чтоб не модели выводились треугольники(так понятней)
@!!ex (2008-02-27 19:26:00) [8]> [10] DoKi (27.02.08 19:17)
Ты сам то понимаешь, что такое VBO И зачем он нужен?
P.S.
код в [8] - не рабочий/не полный
DoKi (2008-02-27 19:17:00) [9]значит myModel.VBOlink -типа cardinal это буфер
а что такое буфер?
@!!ex (2008-02-27 19:12:00) [10]> [8] DoKi (27.02.08 18:58)
Это VBO!!! О котором я говорил в [6]
VBOLink не хранит данные о вершине, он хранит данные о буффере, как можно догадаться из кода.
DoKi (2008-02-27 18:58:00) [11]а вот ещё способ
glGenBuffersARB(1, @myModel.VBOlink); //генерирует уникальные имена для буферных объектов
glBindBufferARB(GL_ARRAY_BUFFER_ARB, myModel.VBOlink); //привязка буферного объекта
glDrawArrays(GL_TRIANGLES,0,3*poligons);//посылает на вывод множество геометрических примитивов.
но здесь myModel.VBOlink имеет тип cardinal
как тогда вершины хрнятся в типе cardinal ??
DoKi (2008-02-27 15:49:00) [12]да уж
@!!ex (2008-02-27 15:45:00) [13]> [5] DoKi (27.02.08 14:34)
VBO - forever
DoKi (2008-02-27 14:34:00) [14]нащёл ошибку теперь всё рисует,
но при 20000 треугольниках уже тормозит
DoKi (2008-02-27 14:29:00) [15]вообще не рисует даже один
Jeer (2008-02-27 14:26:00) [16]
> DoKi (27.02.08 07:36)
А, что - с 10-ю треугольниками все в порядке ?
DoKi (2008-02-27 13:59:00) [17]вот
Vertex : Array [0..2000000, 0..2] of glfloat;
/////////////////////вершина 1
vertex [0,0]:=1;
vertex [0,1]:=0;
vertex [0,2]:=0;
////////////////////////вершина2
vertex [1,0]:=0;
vertex [1,1]:=1;
vertex [1,2]:=0;
/////////////////////////вершина3
vertex [2,0]:=2;
vertex [2,1]:=1;
vertex [2,2]:=1;
и т д
Dimaxx (2008-02-27 13:49:00) [18]
> Vertex : Array .....//массив
Подробней в этом месте. Я так подозреваю задан динамический массив, а кто размерность будет указывать?