Ejemplo n.º 1
0
        public void UpdateBufferObjects(GL11 pGL11)
        {
            HashSet <BufferObject> bufferObjectsManaged      = BufferObjectManager.mBufferObjectsManaged;
            List <BufferObject>    bufferObjectsLoaded       = BufferObjectManager.mBufferObjectsLoaded;
            List <BufferObject>    bufferObjectsToBeLoaded   = BufferObjectManager.mBufferObjectsToBeLoaded;
            List <BufferObject>    bufferObjectsToBeUnloaded = BufferObjectManager.mBufferObjectsToBeUnloaded;

            /* First load pending BufferObjects. */
            int bufferObjectToBeLoadedCount = bufferObjectsToBeLoaded.Count;

            if (bufferObjectToBeLoadedCount > 0)
            {
                for (int i = bufferObjectToBeLoadedCount - 1; i >= 0; i--)
                {
                    BufferObject bufferObjectToBeLoaded = bufferObjectsToBeLoaded[i];
                    if (!bufferObjectToBeLoaded.IsLoadedToHardware())
                    {
                        bufferObjectToBeLoaded.LoadToHardware(pGL11);
                        bufferObjectToBeLoaded.SetHardwareBufferNeedsUpdate();
                    }
                    bufferObjectsLoaded.Add(bufferObjectToBeLoaded);
                }

                bufferObjectsToBeLoaded.Clear();
            }

            /* Then unload pending BufferObjects. */
            int bufferObjectsToBeUnloadedCount = bufferObjectsToBeUnloaded.Count;

            if (bufferObjectsToBeUnloadedCount > 0)
            {
                for (int i = bufferObjectsToBeUnloadedCount - 1; i >= 0; i--)
                {
                    //BufferObject bufferObjectToBeUnloaded = bufferObjectsToBeUnloaded.remove(i);
                    BufferObject bufferObjectToBeUnloaded = bufferObjectsToBeUnloaded[i];
                    bufferObjectsToBeUnloaded.Remove(bufferObjectToBeUnloaded);
                    if (bufferObjectToBeUnloaded.IsLoadedToHardware())
                    {
                        bufferObjectToBeUnloaded.UnloadFromHardware(pGL11);
                    }
                    bufferObjectsLoaded.Remove(bufferObjectToBeUnloaded);
                    bufferObjectsManaged.Remove(bufferObjectToBeUnloaded);
                }
            }
        }
Ejemplo n.º 2
0
 public void UnloadBufferObject(BufferObject pBufferObject)
 {
     if (pBufferObject == null)
     {
         return;
     }
     if (BufferObjectManager.mBufferObjectsManaged.Contains(pBufferObject))
     {
         if (BufferObjectManager.mBufferObjectsLoaded.Contains(pBufferObject))
         {
             BufferObjectManager.mBufferObjectsToBeUnloaded.Add(pBufferObject);
         }
         else if (BufferObjectManager.mBufferObjectsToBeLoaded.Remove(pBufferObject))
         {
             BufferObjectManager.mBufferObjectsManaged.Remove(pBufferObject);
         }
     }
 }
Ejemplo n.º 3
0
        public void LoadBufferObject(BufferObject pBufferObject)
        {
            if (pBufferObject == null)
            {
                return;
            }

            if (BufferObjectManager.mBufferObjectsManaged.Contains(pBufferObject))
            {
                /* Just make sure it doesn't get deleted. */
                BufferObjectManager.mBufferObjectsToBeUnloaded.Remove(pBufferObject);
            }
            else
            {
                BufferObjectManager.mBufferObjectsManaged.Add(pBufferObject);
                BufferObjectManager.mBufferObjectsToBeLoaded.Add(pBufferObject);
            }
        }