跳转至
  • 要实现什么 完善Gizmos,点击场景的物体,即会显示gizmos,而不用点击hierachy 的实体才显示。
  • 实现思路 光栅化输出到界面有每一个像素对应的实体ID(这节要实现的)
  • 实现要求 (下几节要实现的)
    1. 设计鼠标点击屏幕将鼠标坐标转换
    2. 实现能采样当前像素的值,从而得到对应hierarchy中对应实体的ID。 由下面的思路得出:
  • 修改和优化帧缓冲类,能附加多个不同类别缓冲区
  • 使得帧缓冲区可以附加两个颜色纹理,实现一个渲染通道有两个渲染目标,并且imgui可以显示出第二个渲染目标

bug排查

#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
可以看出来是missing_Attachment

断点调试: 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;

                }
            }