ППЦ я не понимаю почему такая задержка
HolyDel:
В ядре:
сначала вызывается scene->draw();
в сцене лежит std::vector<CNode*> _nodes; //это список объектов для отрисовки
кратко, что делает CScene::draw()
...............
glm::mat4 m_view = camera()->matrix_view();//один раз за фрейм получаем матрицу вида
_frustum->CalculateFrustum(m_view);//считаем фрутсум
for(int i=-1;++i<_nodes.size();)//проходим по всем нодам (ентитям) (этот метод цикла быстрей итераторного)
{
CNode* curnode = _nodes[i];//берем 1 раз за итерацию объект массива (так быстрей)
if(curnode->vbo()!=NULL){//если есть геометрия
glm::vec4 cur_pos = curnode->position(true);//определяем позицию (4 столбец из матрицы)
if(_frustum->CubeInFrustum(cur_pos.x,cur_pos.y,cur_pos.z,curnode->vbo()->box()))//эта строка вообще никак не влияет на скорость как ни странно
curnode->drawVBO(m_view); //рисуем геометрию
}
}
.........................
}
вот код CNode::drawVBO
void CNode::drawVBO(glm::mat4 &m_view)
{
if(!_effect || !_visible) return;
_effect->setWorldMatrixSemantic(matrix(true));//тут ничего страшного тупо передача в шейдер не должно тормозить
_effect->setViewMatrixSemantic(m_view);
_effect->setProjMatrixSemantic(APP->render()->projection());
_effect->setTexture0Semantic(_texture);
_shader_queue->bind();//тут пусто, это передача кастомных параметров в шейдер
while(_effect->pass())//тут проходим по всем проходам, тоже ни чего мудреного проход один в шейдере
{
_vbo->drawBuffers();//рисуем буфферы на гапи
}
//_shader_queue->unbind();
}
код отрисовки буферов на гапи
if(_vbuffer && _ibuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _vbuffer );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
if(_nbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _nbuffer );
glNormalPointer(GL_FLOAT,0,0);
}
if(_tbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _tbuffer );
glTexCoordPointer( 2, GL_FLOAT, 0, 0 );
}
{
APP->render()->dips_up();
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, _ibuffer);
glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_SHORT,0);
//glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
}
}
мля!! что тут может тормозить я не понимаю!! я даже бинды убирал, эффект от этого не поменялся.. у мня 4к кубов 40 фпс, axel 255!!! юнити 50, все остальное 80