public void Recalc(LiveMap _liveMap) { m_lightsCount = 0; m_edgesCount = 0; var avatarXY = BaseMapBlock.GetInBlockCoords(World.TheWorld.Avatar.GeoInfo.LiveCoords) + new Point(32, 32); m_lights[m_lightsCount++] = new Light { LightSource = new AvatarSight(), Point = new PointF(avatarXY.X, avatarXY.Y), LiveMapCell = World.TheWorld.Avatar[0, 0] }; #if DEBUG using (new Profiler("LosManagerEx.Recalc")) #endif { ПодготовкаКарты(_liveMap, avatarXY); СформироватьМассивГраней(); while (m_fboBlit.CountOfBuffers < (m_lightsCount + 2)) { m_fboBlit.AddTextureBuffer(); } Отрисовка(avatarXY); ОбновитьСостояниеОсвещенностиКарты(_liveMap); } GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.Enable(EnableCap.Texture2D); }
public ShadowMap() : base(Map.SIZE * VSZ, Map.SIZE * VSZ) { if (SZ*Map.SIZE > FboWrapper.SIZE) { throw new ApplicationException(); } CreateShaders(); m_fboWrapperBlit = new FboWrapper(false); m_t1 = m_fboWrapperBlit.AddTextureBuffer(); m_t2 = m_fboWrapperBlit.AddTextureBuffer(); m_fboWrapperBlit.Check(); m_fboWrapper = new FboWrapper(true); //m_fboWrapper.AddTextureBuffer(); VSync=VSyncMode.Off; }
public ShadowMap() : base(Map.SIZE * VSZ, Map.SIZE * VSZ) { if (SZ * Map.SIZE > FboWrapper.SIZE) { throw new ApplicationException(); } CreateShaders(); m_fboWrapperBlit = new FboWrapper(false); m_t1 = m_fboWrapperBlit.AddTextureBuffer(); m_t2 = m_fboWrapperBlit.AddTextureBuffer(); m_fboWrapperBlit.Check(); m_fboWrapper = new FboWrapper(true); //m_fboWrapper.AddTextureBuffer(); VSync = VSyncMode.Off; }