25 if (!basicShader || !cubeMesh)
return;
27 const auto& objects = sceneManager->
getObjects();
28 m_instanceScratch.clear();
29 if (m_instanceScratch.capacity() < objects.size()) {
30 m_instanceScratch.reserve(objects.size());
33 for (
const auto& objPtr : objects) {
42 if (!worldCol)
continue;
44 glm::vec3 minBound = worldCol->getAABBMin();
45 glm::vec3 maxBound = worldCol->getAABBMax();
46 const glm::vec3 center = (minBound + maxBound) * 0.5f;
47 const glm::vec3 extents = maxBound - minBound;
49 glm::mat4 model(1.0f);
50 model = glm::translate(model, center);
51 model = glm::scale(model, extents);
52 m_instanceScratch.emplace_back(model, obj->
getObjectID(), kColliderColor);
55 if (m_instanceScratch.empty())
return;
60 for (
auto& instance : m_instanceScratch) {
61 instance.model = worldToRender * instance.model;
64 GLint oldPolygonMode[2];
65 GLfloat oldLineWidth = 1.0f;
66 gl->glGetIntegerv(GL_POLYGON_MODE, oldPolygonMode);
67 gl->glGetFloatv(GL_LINE_WIDTH, &oldLineWidth);
69 gl->glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
70 gl->glLineWidth(1.0f);
72 gl->glPolygonMode(GL_FRONT_AND_BACK,
static_cast<GLenum
>(oldPolygonMode[0]));
73 gl->glLineWidth(oldLineWidth);
virtual Bounding::ICollider * getCollider() const