Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Вниз

opengl2 треугольники   Найти похожие ветки 

 
DoKi   (2008-02-27 07:36) [0]

как на 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 триуголиников
////////////////////////////////////////////////
программа компилируется а на экране пусто


 
Dimaxx ©   (2008-02-27 13:49) [1]


> Vertex : Array .....//массив

Подробней в этом месте. Я так подозреваю задан динамический массив, а кто размерность будет указывать?


 
DoKi   (2008-02-27 13:59) [2]

вот
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;
и т д


 
Jeer ©   (2008-02-27 14:26) [3]


> DoKi   (27.02.08 07:36)


А, что - с 10-ю треугольниками все в порядке ?


 
DoKi   (2008-02-27 14:29) [4]

вообще не рисует даже один


 
DoKi   (2008-02-27 14:34) [5]

нащёл ошибку теперь всё рисует,
но при 20000 треугольниках уже тормозит


 
@!!ex ©   (2008-02-27 15:45) [6]

> [5] DoKi   (27.02.08 14:34)

VBO - forever


 
DoKi   (2008-02-27 15:49) [7]

да уж


 
DoKi   (2008-02-27 18:58) [8]

а вот ещё способ
glGenBuffersARB(1, @myModel.VBOlink); //генерирует уникальные имена для буферных объектов
glBindBufferARB(GL_ARRAY_BUFFER_ARB, myModel.VBOlink); //привязка буферного объекта

glDrawArrays(GL_TRIANGLES,0,3*poligons);//посылает на вывод множество геометрических примитивов.

но здесь myModel.VBOlink имеет тип cardinal
как тогда вершины хрнятся в типе cardinal ??


 
@!!ex ©   (2008-02-27 19:12) [9]

> [8] DoKi   (27.02.08 18:58)

Это VBO!!! О котором я говорил в [6]

VBOLink не хранит данные о вершине, он хранит данные о буффере, как можно догадаться из кода.


 
DoKi   (2008-02-27 19:17) [10]

значит myModel.VBOlink -типа cardinal это буфер
а что такое буфер?


 
@!!ex ©   (2008-02-27 19:26) [11]

> [10] DoKi   (27.02.08 19:17)

Ты сам то понимаешь, что такое VBO И зачем он нужен?

P.S.
код в [8] - не рабочий/не полный


 
DoKi   (2008-02-27 19:35) [12]

да понимаю
а код конешно не полный
вот исходник
www.delphisources.ru/pages/sources/graph/2007_year/igrodel_shaders.html
папка sceleton модуль _render.pas
тока мне нужно чтоб не модели выводились  треугольники(так понятней)


 
@!!ex ©   (2008-02-27 20:10) [13]

> да понимаю

Ну расскажи?


 
@!!ex ©   (2008-02-27 20:15) [14]

Короче, для тех, кому влом читать о VBO.
VBo - Vertex Buffer Object
Как понятно из названия - это вершинный буффер.
Суть данного расширения в том, что оно позволяет хранить массивы вершин в ВИДЕО памяти, что существенно ускоряет скорость рендера больших объектов(т.к. не приходится пересылать данные между обычной память и видеопамятью).
Суть инициализации сводится к генерации уникального имени буффера, установки текущего буффера, его заполнение(отсутствует в [8]).
Рендеринг сводится к установке текущего буффера и рендеру.


 
DoKi   (2008-02-27 20:35) [15]

зполнение отсутствует - просто я не смог его в исходнике найти


 
@!!ex ©   (2008-02-27 20:40) [16]

Короч вот кусок кода из моего проекта:
инициализация:
   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);


 
SCRIMERS   (2008-08-20 18:21) [17]

Вопрос, а что за ОГЛ такой, что команды glGenBuffersARB и все на *ARB имеются? Например у меня такие команды ни в одном заголовочном файле не имеется: ни в Глуте, ни даже в ОГЛ - та вообще нет нигде.

Напишите мне пожалуйста объявления этих функций (ВБО) или где можно их вообще взять, или где можно взять "новый" заголовочный файл ОГЛ или ГЛУТ.

Сразу говорю, что ресурсы типа www.mirgames.ru не катят, ибо читаю ту статью по VBO  я и пришел сюда.

Я программирую на Делфи 6, стандартные библиотеки ГЛУТ и ОГЛ. Заранее Спасибо.


 
SCRIMERS   (2008-08-20 19:33) [18]

всё разобрался сам- спасибо. ВСЕМ КТО НЕ ЗНАЕТ КАК ЭТО СДЕЛАТЬ ПРОШУ СЮДА http://delphimaster.net/view/9-1179836491/



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.077 c
9-1189869399
ElectriC
2007-09-15 19:16
2011.11.20
Collusion Detection на ID3DXSprite


15-1311199461
Делфиец
2011-07-21 02:04
2011.11.20
А есть ли в Питере?


3-1266597753
NewZ
2010-02-19 19:42
2011.11.20
SQL Server 2000. TQuery.


2-1312259634
Grimm
2011-08-02 08:33
2011.11.20
Как правильно написать условие if для StringList.IndexOf ?


15-1311884998
Юрий
2011-07-29 00:29
2011.11.20
С днем рождения ! 29 июля 2011 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский