- 要实现什么 完善Gizmos,点击场景的物体,即会显示gizmos,而不用点击hierachy 的实体才显示。
- 实现思路 光栅化输出到界面有每一个像素对应的实体ID(这节要实现的)
- 实现要求 (下几节要实现的)
- 设计鼠标点击屏幕将鼠标坐标转换
- 实现能采样当前像素的值,从而得到对应hierarchy中对应实体的ID。 由下面的思路得出:
- 修改和优化帧缓冲类,能附加多个不同类别缓冲区。
- 使得帧缓冲区可以附加两个颜色纹理,实现一个渲染通道有两个渲染目标,并且imgui可以显示出第二个渲染目标
bug排查¶
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
断点调试: size = 0;
if (m_ColorAttachmentSpecifications.size())
{
//重新释放空间
m_ColorAttachments.resize(m_ColorAttachmentSpecifications.size());
Utils::CreateTextures(multisample, m_ColorAttachments.data(), m_ColorAttachments.size());//创建FBO
for (size_t i = 0; i < m_ColorAttachments.size(); i++)
{
Utils::BindTexture(multisample, m_ColorAttachments[i]);
switch (m_ColorAttachmentSpecifications[i].TextureFormat)
{
case FramebufferTextureFormat::RGBA8:
Utils::AttachColorTexture(m_ColorAttachments[i], m_Specification.Samples, GL_RGBA8, m_Specification.Width, m_Specification.Height, i);
break;
}
}