2015-05-01 7 views
-1

У меня есть карта высот и модель в моем замеченном виде. Когда я сам создаю карту высот без загрузки модели, карта высот отлично отображает себя как горная местность. Но когда я загружаю модель вместе с ней и перестраиваю программу, карта высот не перемещает ее вершины, чтобы сделать себя горным ландшафтом. Вместо этого он остается плоским, как если бы не было расчетов высотной карты вообще.Рендеринг объекта приводит к тому, что карта высот не вычисляется

Что я заметил, так это то, что если я нарисую карту высот сначала, когда программа скомпилируется, сцена покажет мерцание карты высот правильно, затем сгладится, когда модель будет нарисована.

void Game::render() 
    {  
     terrain->draw(); // draws heightmap correctly 
     modelG->draw(); // causes heightmap to flatten 
    } 
+0

Никто не может узнать, что происходит, не видя соответствующих частей кода. Ваше общее описание звучит так, как ваш код рисования модели переписывает некоторые состояния, необходимые для рисования ландшафта, но по какой-то причине не устанавливает себя. – derhass

ответ

0

Проблема, которую я обнаружил, заключалась в том, что я не возвращал текстуру heightmap в мою функцию рисования. Он был связан только один раз, когда он был создан. Вот почему карта высот, сделанная правильно изначально, затем сглаживается навсегда. Таким образом, в конце концов, я просто должен был поместить те же вызовы привязки, где я сначала инициализировал текстуру высотной карты в рамках функции draw.

void Terrain::draw() 
     { 
     glActiveTexture(GL_TEXTURE0); // solution 
     glBindTexture(GL_TEXTURE_2D, heightMapTextureID); // solution 

     mShader.enable(); 
     glBindVertexArray(mVAO); 
     //draw terrain mesh 
     glDrawElements(GL_TRIANGLES, TOTAL_INDICES, GL_UNSIGNED_INT, 0); 
     glBindVertexArray(0); 
     //unbind mShader 
     mShader.disable(); 
     } 
Смежные вопросы