PMG
https://forum.pmg.org.ru/

Использование VBO
https://forum.pmg.org.ru/viewtopic.php?f=1&t=9418
Страница 1 из 1

Автор:  danrusm [ 07 сен 2012 07:51 ]
Заголовок сообщения:  Использование VBO

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

Автор:  MagicWolf [ 07 сен 2012 15:28 ]
Заголовок сообщения:  Re: Использование VBO

Мне кажется VBO все равно быстрее. Во всяком случае можно иметь провести тестирование...

Автор:  danrusm [ 08 сен 2012 09:02 ]
Заголовок сообщения:  Re: Использование VBO

Спасибо! Ну что ж, будем иметь и тестировать, тестировать и иметь.

Автор:  MagicWolf [ 10 сен 2012 10:58 ]
Заголовок сообщения:  Re: Использование VBO

Вообще если есть возможность, то лучше сделать сразу несколькими путями:
Код:
int CMD2_OGL:: draw ()
{
  if ( yes_init_md2 == false || yes_draw_model == false)
    return IS_ERROR;

  CTexture_OGL * tex;
  ulong_t off=0;

  tex = (CTexture_OGL *) skin_ptr->tex_skin;
  tex->bind_texture();

  glEnableClientState(GL_VERTEX_ARRAY);
  glEnableClientState(GL_TEXTURE_COORD_ARRAY);

  if ( yes_buffers_ogl && scene_setting!=0 && scene_setting->yes_buffer_ogl ) {
    glBindBuffer(GL_ARRAY_BUFFER, bufferID);
    glVertexPointer(3, GL_FLOAT, 0, (GLvoid*)off);
    off+=(sizeof(SVector3f) * count_tri * 3);
    glTexCoordPointer(2, GL_FLOAT, 0, (GLvoid*)off);
  }
  else {
    glVertexPointer(3, GL_FLOAT, 0, (GLvoid*)ptr_vertexs);
    glTexCoordPointer(2, GL_FLOAT, 0, (GLvoid*)tex_coords);
  }

  glDrawArrays(GL_TRIANGLES, 0, count_tri * 3);

  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  glDisableClientState(GL_VERTEX_ARRAY);

  if ( yes_buffers_ogl && scene_setting!=0 && scene_setting->yes_buffer_ogl )
    glBindBuffer(GL_ARRAY_BUFFER, 0);

/*
   glBegin(GL_TRIANGLES);
   for(ulong_t x = 0, k=0; x < count_tri; x++)
   {
      glTexCoord2fv( (GLfloat*)&tex_coords[k] );
    glVertex3fv( (GLfloat*)&ptr_vertexs[k++] );
      glTexCoord2fv( (GLfloat*)&tex_coords[k] );
      glVertex3fv( (GLfloat*)&ptr_vertexs[k++] );
      glTexCoord2fv( (GLfloat*)&tex_coords[k] );
      glVertex3fv( (GLfloat*)&ptr_vertexs[k++] );
   }
  glEnd();
*/
  return IS_OK;
}

Автор:  danrusm [ 12 сен 2012 16:27 ]
Заголовок сообщения:  Re: Использование VBO

Это хороший совет, обязательно учту.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/