PMG https://forum.pmg.org.ru/ |
|
VBO https://forum.pmg.org.ru/viewtopic.php?f=1&t=8055 |
Страница 1 из 2 |
Автор: | isaer [ 02 окт 2010 02:36 ] |
Заголовок сообщения: | VBO |
помогите мне разобраться с VBO сколько не ищу никак не могу найти где будет нормально написано про VBO везде слишком много воды на этом сайте смотрел, там ничего не понял мне нужен конкретный пример с русскими каментариями (что бы все стало понятно) и что бы программа не содержала ничего лишнего, тоесть все конкретно есть сцена есть фигура (простая) а то скачал пример, так там камеру делали, текстурирование и тд, и код на VBO так не нашел оч прошу помочь, а то совсем не могу найти информации |
Автор: | MagicWolf [ 04 окт 2010 12:49 ] |
Заголовок сообщения: | Re: VBO |
А здесь плохо изложено? http://pmg.org.ru/nehe/nehe45.htm |
Автор: | Dion [ 04 окт 2010 14:21 ] |
Заголовок сообщения: | Re: VBO |
Может чем поможет |
Автор: | bad_duck [ 04 окт 2010 18:24 ] |
Заголовок сообщения: | Re: VBO |
Насколько я понимаю VBO нужен для помещения в память видеокарты больших массивов данных. А как тогда быть, если есть много не очень больших массивов? Создавать массивы из VBO или тогда VBO вообще не нужно использовать? |
Автор: | isaer [ 04 окт 2010 22:36 ] |
Заголовок сообщения: | Re: VBO |
ну что то почитал решил написать какой нить простой объект, писал так: Код: #define GL_GLEXT_PROTOTYPES float vertices[] = {1,1,1, -1,1,1, -1,-1,1, 1,-1,1}; float normals[] = {0,0,1, 0,0,1, 0,0,1, 0,0,1}; float colors[] = {1,1,1, 1,1,0, 1,0,0, 1,0,1}; GLuint triangleVBO = 0; void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glGenBuffers(1, &triangleVBO); glBindBuffer(GL_ARRAY_BUFFER, triangleVBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals)+sizeof(colors), 0, GL_STATIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(normals), normals); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals), sizeof(colors), colors); glBindBufferARB(GL_ARRAY_BUFFER, triangleVBO); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glNormalPointer(GL_FLOAT, 0, (void*)sizeof(vertices)); glColorPointer(3, GL_FLOAT, 0, (void*)(sizeof(vertices)+sizeof(normals))); glVertexPointer(3, GL_FLOAT, 0, 0); glDrawArrays(GL_QUADS, 0, 24); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); SDL_GL_SwapBuffers(); ошибок нет но ничего не рисует в чем проблема и как ее исправить?? |
Автор: | Dion [ 05 окт 2010 13:29 ] |
Заголовок сообщения: | Re: VBO |
Мне кажется, что у вас обход вершин треугольника настроен отлично от реального расположения вершин. Хотя может быть и не в этом дело. |
Автор: | MagicWolf [ 05 окт 2010 16:43 ] |
Заголовок сообщения: | Re: VBO |
Попробуй вначале через Arrays. |
Автор: | isaer [ 05 окт 2010 19:26 ] |
Заголовок сообщения: | Re: VBO |
блин я же ничего в VBO не знаю =(( вы лучше не идеи коворите а как сделать это а то я ток начинаю изучать VBO |
Автор: | isaer [ 06 окт 2010 21:25 ] |
Заголовок сообщения: | Re: VBO |
ну так что?? |
Автор: | MagicWolf [ 07 окт 2010 10:18 ] |
Заголовок сообщения: | Re: VBO |
Ты посмотрел 45 урок NeHe? |
Автор: | isaer [ 08 окт 2010 00:19 ] |
Заголовок сообщения: | Re: VBO |
да все смотрел там полный бред!! я уже сам решил (вчера) окозалось дело в камере теперь знаю как использовать VBO +)) |
Автор: | MagicWolf [ 08 окт 2010 13:00 ] |
Заголовок сообщения: | Re: VBO |
Бред? Это как. Вроде самое простое объяснено. |
Автор: | isaer [ 08 окт 2010 22:24 ] |
Заголовок сообщения: | Re: VBO |
не знаю не знаю я почитал но ничего не полнял к сожалению зато потом в инете по разным статьям наконец то сложилось то чего я хотел узнать теперь борюсь с тем что бы переместить все в класс, и если надо нарисовать то указываю что нарисовать если надо сделать меш то указываю из чего но пока что ничего не выходит =( вот то что я делаю Код: CObject::CObject() { unsigned int vboId = NULL; } //////////////////////////////////////////////////////////////////////////////////// CObject::~CObject() { } //////////////////////////////////////////////////////////////////////////////////// void CObject::CreateMeshe(float *vertices, float *normals, float *colors) { vboId = 0; glGenBuffers(1, &vboId); glBindBuffer(GL_ARRAY_BUFFER, vboId); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals)+sizeof(colors), 0, GL_STATIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(normals), normals); glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals), sizeof(colors), colors); } //////////////////////////////////////////////////////////////////////////////////// void CObject::DrawPrimitive(float *vertices, float *normals) { glBindBufferARB(GL_ARRAY_BUFFER, vboId); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glNormalPointer(GL_FLOAT, 0, (void*)sizeof(vertices)); glColorPointer(3, GL_FLOAT, 0, (void*)(sizeof(vertices)+sizeof(normals))); glVertexPointer(3, GL_FLOAT, 0, 0); glDrawArrays(GL_QUADS, 0, 4); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glBindBuffer(GL_ARRAY_BUFFER, 0); } но ничего не рисует =(( если что то я задаю вот такие вершины и передаю их финкциям float vertices[] = {1,1,1, -1,1,1, -1,-1,1, 1,-1,1}; float normals[] = {0,0,1, 0,0,1, 0, 0,1, 0, 0,1}; float colors[] = {1,1,1, 1,1,0, 1, 0,0, 1, 0,1}; |
Автор: | Da Man [ 08 окт 2010 23:02 ] |
Заголовок сообщения: | Re: VBO |
У тебя дрова-то на OGL стоят?! |
Автор: | isaer [ 10 окт 2010 18:08 ] |
Заголовок сообщения: | Re: VBO |
Da Man писал(а): У тебя дрова-то на OGL стоят?! по моему это самый тупой вопрос конешн стоят как же я тогда пишу?? я же когда без класса тогда все нормально русется |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |