c++ - Why is my model taking my skybox's texture? -


i have been looking @ problem days , can't figure out why model takes skybox's texture. has been bugging me forever. here looks like.this model looks after skybox loaded in. what model looks before skybox loaded scene.

core.cpp main loop

while (!m_window.closed()) {     m_window.varupdate();      m_window.do_movement();      glclearcolor(0.1f, 0.1f, 0.1f, 1.0f);     m_window.clear();       m_modelshader.enable();     glm::mat4 model;     model = glm::scale(model, glm::vec3(0.2f));     //model = glm::translate(model, glm::vec3(5.0f));     glm::mat4 view = m_window.m_camera.getviewmatrix();     glm::mat4 projection = glm::perspective(m_window.m_camera.zoom, (float)m_window.getwindowx() / (float)m_window.getwindowy(), 0.1f, 100.0f);     gluniformmatrix4fv(glgetuniformlocation(m_modelshader.m_programid, "model"), 1, gl_false, glm::value_ptr(model));     gluniformmatrix4fv(glgetuniformlocation(m_modelshader.m_programid, "view"), 1, gl_false, glm::value_ptr(view));     gluniformmatrix4fv(glgetuniformlocation(m_modelshader.m_programid, "projection"), 1, gl_false, glm::value_ptr(projection));     gluniform3f(glgetuniformlocation(m_modelshader.m_programid, "camerapos"), m_window.m_camera.position.x, m_window.m_camera.position.y, m_window.m_camera.position.z);     m_model.draw(m_modelshader);      gldepthfunc(gl_lequal);     m_skyboxshader.enable();     glm::mat4 projections = glm::perspective(m_window.m_camera.zoom, (float)m_window.getwindowx() / (float)m_window.getwindowy(), 0.1f, 100.0f);     glm::mat4 views = m_window.m_camera.getviewmatrix(); //this set glm::mat4(glm::mat3(m_window.m_camera.getviewmatrix())); center on camera.     gluniformmatrix4fv(glgetuniformlocation(m_skyboxshader.m_programid, "projection"), 1, gl_false, glm::value_ptr(projections));     gluniformmatrix4fv(glgetuniformlocation(m_skyboxshader.m_programid, "view"), 1, gl_false, glm::value_ptr(views));     glbindvertexarray(svao);     glactivetexture(gl_texture0);     gluniform1i(glgetuniformlocation(m_skyboxshader.m_programid, "skybox"), 0);     glbindtexture(gl_texture_cube_map, skyboxtex);     gldrawarrays(gl_triangles, 0, 36);     glbindvertexarray(0);     gldepthfunc(gl_less);        m_window.update(); } 

opengl state machine, i.e. remembers , keeps using last configuration set. when draw model (m_model.draw) opengl still has skybox texture bound , active previous drawing iteration… , hence applies it. it's practice either

  • clean opengl state @ end of rendering frame
  • clean opengl state @ beginning of rendering frame
  • clean opengl state set particular drawing batch right after batch

or

  • set/unset opengl state what's required next drawing batch right before drawing particular batch.

in case suggest unbind texture after drawing skybox.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -