Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [OpenGL] VBO на встроенной видяхе 
:(
    Опции темы
Vetos
Дата 2.8.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: 3
Всего: 4



Рисуется ландшафт 128Х128 точек, покрытый текстурой, с использованием сглаживающих нормалей. Вобщем вначале сделал с помощью glDrawArrays, потом решил задействовать VBO, но  smile никакого прироста FPS нет. Я думаю это связано с тем что встроенная видяха, получается массивы всеравно в оперативке, только в зарезервированном для видяхи месте?


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Rickert
Дата 3.8.2009, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Vetos, сколько было fps до применения VBO? Как считаете fps?

Это сообщение отредактировал(а) Rickert - 3.8.2009, 08:28


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Vetos
Дата 3.8.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: 3
Всего: 4



считаю так
Код

    fps+=1.0f;
    if ( (timeGetTime()*0.001f) > (mytime+1.0f) )
    {
    mytime = timeGetTime() * 0.001f;
    sprintf( cfps, "%f", fps );
    SetWindowText( hWnd, cfps );
    fps = 0;
    }


если не смотреть на ландшафт то 70 стабильно, если смотреть то 35 стабильно, с VBO такаяже самая борода


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Rickert
Дата 4.8.2009, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Тогда покажите как реализовали VBO ?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Vetos
Дата 4.8.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: 3
Всего: 4



Реализовал как в уроках NeHe
Собственно так:
Код

//Код загрузки ландшафта и обработки нормалей опущен

    glGenBuffersARB = (PFNGLGENBUFFERSARBPROC) wglGetProcAddress("glGenBuffersARB");
    glBindBufferARB = (PFNGLBINDBUFFERARBPROC) wglGetProcAddress("glBindBufferARB");
    glBufferDataARB = (PFNGLBUFFERDATAARBPROC) wglGetProcAddress("glBufferDataARB");
    glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) wglGetProcAddress("glDeleteBuffersARB");

    glGenBuffersARB( 1, &VBOVertex );
    glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOVertex );
    glBufferDataARB( GL_ARRAY_BUFFER_ARB, VertCount * sizeof( float ), VertexArray, GL_STATIC_DRAW_ARB );

    glGenBuffersARB( 1, &VBONormal );
    glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBONormal );
    glBufferDataARB( GL_ARRAY_BUFFER_ARB, VertCount * sizeof( float ), NormalArray, GL_STATIC_DRAW_ARB );

    glGenBuffersARB( 1, &VBOTexCoord );
    glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOTexCoord );
    glBufferDataARB( GL_ARRAY_BUFFER_ARB, CountTx * sizeof( float ), TexCoordArray, GL_STATIC_DRAW_ARB );

    VertCount /= 3;

        glEnableClientState( GL_VERTEX_ARRAY );
        glEnableClientState( GL_NORMAL_ARRAY );
        glEnableClientState( GL_TEXTURE_COORD_ARRAY );
        glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBONormal );
        glNormalPointer(GL_FLOAT, 0, (char *) NULL );//sizeof( float[3] ), NormalArray );
        glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOTexCoord );
        glTexCoordPointer(2, GL_FLOAT, 0, (char *) NULL );//sizeof( float[2] ), TexCoordArray );
        glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOVertex );
        glVertexPointer(3, GL_FLOAT, 0, (char*) NULL );//sizeof( float[3] ), VertexArray );

//и отрисовываю так

    glBindTexture( GL_TEXTURE_2D, TextureNum );
        glDrawArrays( GL_TRIANGLES, 0, VertCount );




Данные NormalArray, TexCoordArray, VertexArray содержат тупо идущие друг за другом координаты нормали, текстуры, точек.
Код

//Даже если делать отрисовку так
        glEnableClientState( GL_VERTEX_ARRAY );
        glEnableClientState( GL_NORMAL_ARRAY );
        glEnableClientState( GL_TEXTURE_COORD_ARRAY );
             glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBONormal );
                 glNormalPointer(GL_FLOAT, 0, (char *) NULL );
             glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOTexCoord );
                 glTexCoordPointer(2, GL_FLOAT, 0, (char *) NULL );
             glBindBufferARB( GL_ARRAY_BUFFER_ARB, VBOVertex );
                 glVertexPointer(3, GL_FLOAT, 0, (char*) NULL );
                     glBindTexture( GL_TEXTURE_2D, TextureNum );
                glDrawArrays( GL_TRIANGLES, 0, VertCount );
                glDisableClientState( GL_VERTEX_ARRAY );
                glDisableClientState( GL_NORMAL_ARRAY );
                glDisableClientState( GL_TEXTURE_COORD_ARRAY );

всё тоже самое, 70 когда не смотрим на ландшафт и 35, когда смотрим и бегаем по немуsmile



--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
MAV73
Дата 19.12.2012, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.12.2012

Репутация: нет
Всего: нет



Vetos, столкнулся с проблемой падения производительности на 5-10 процентов в попавшемся примерчике на delphi, особенность примера там генерится два буфера для вершин и граней, отрисовка по glDrawElements. Бросил данный пример стал мучить пример NeHe, зафиксировал вращение сцены, увеличил мап до 2048(примерно полмиллиона треугольников), и в проверке расширений  изменял имя расширения для включения отрисовки без VBO, прирост производительности 25-30 что собственно не особо радует :(. Видюха встроенная.
PM MAIL   Вверх
tzirechnoy
Дата 20.12.2012, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Вообще -- и не должно быть a priori. Ну, потому, что это не такой адский bottleneck, чтобы он всё затыкал обычно.
Впрочем, попробуйте через DisplayLists. Мало ли.
Но это всё всё равно эксперименты, с обычно отрицательными результатми.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.