Esempio n. 1
0
        public void LoadToHardware(GL11 pGL11)
        {
            this.mHardwareBufferID = this.GenerateHardwareBufferID(pGL11);
            //		Debug.d("BufferObject.loadToHardware(): ID = " + this.mHardwareBufferID);

            this.mLoadedToHardware = true;
        }
Esempio n. 2
0
        public void UnloadFromHardware(GL11 pGL11)
        {
            this.DeleteBufferOnHardware(pGL11);

            this.mHardwareBufferID = -1;

            this.mLoadedToHardware = false;
        }
Esempio n. 3
0
 public static void BindBuffer(/* final */ GL11 pGL11, /* final */ int pHardwareBufferID)
 {
     /* Reduce unnecessary buffer switching calls. */
     if (GLHelper.sCurrentHardwareBufferID != pHardwareBufferID)
     {
         GLHelper.sCurrentHardwareBufferID = pHardwareBufferID;
         pGL11.GlBindBuffer(GL11Consts.GlArrayBuffer, pHardwareBufferID);
     }
 }
Esempio n. 4
0
        protected override void OnApplyVertices(/* final */ GL10 pGL)
        {
            if (GLHelper.EXTENSIONS_VERTEXBUFFEROBJECTS)
            {
                // TODO: Figure what the required conversion here is
                /* final */
                GL11 gl11 = (GL11)pGL;

                this.GetVertexBuffer().SelectOnHardware(gl11);
                GLHelper.VertexZeroPointer(gl11);
            }
            else
            {
                GLHelper.VertexPointer(pGL, this.GetVertexBuffer().GetFloatBuffer());
            }
        }
        public void OnApply(GL10 pGL)
        {
            if (GLHelper.EXTENSIONS_VERTEXBUFFEROBJECTS)
            {
                GL11 gl11 = (GL11)pGL;

                this.mTextureRegionBuffer.SelectOnHardware(gl11);

                GLHelper.BindTexture(pGL, this.mTexture.GetHardwareTextureID());
                GLHelper.TexCoordZeroPointer(gl11);
            }
            else
            {
                GLHelper.BindTexture(pGL, this.mTexture.GetHardwareTextureID());
                GLHelper.TexCoordPointer(pGL, this.mTextureRegionBuffer.GetFloatBuffer());
            }
        }
        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);
                }
            }
        }
Esempio n. 7
0
        // ===========================================================
        // Methods
        // ===========================================================

        public void SelectOnHardware(GL11 pGL11)
        {
            int hardwareBufferID = this.mHardwareBufferID;

            if (hardwareBufferID == -1)
            {
                return;
            }

            GLHelper.BindBuffer(pGL11, hardwareBufferID); // TODO Does this always need to be binded, or are just for buffers of the same 'type'(texture/vertex)?

            if (this.mHardwareBufferNeedsUpdate)
            {
                //			Debug.d("BufferObject.updating: ID = "  + this.mHardwareBufferID);
                this.mHardwareBufferNeedsUpdate = false;
                //synchronized(this) {
                lock (_methodLock)
                {
                    GLHelper.BufferData(pGL11, this.mFloatBuffer.mByteBuffer, this.mDrawType);
                }
            }
        }
Esempio n. 8
0
        private int GenerateHardwareBufferID(GL11 pGL11)
        {
            pGL11.GlGenBuffers(1, HARDWAREBUFFERID_FETCHER, 0);

            return(HARDWAREBUFFERID_FETCHER[0]);
        }
Esempio n. 9
0
 private void DeleteBufferOnHardware(GL11 pGL11)
 {
     GLHelper.DeleteBuffer(pGL11, this.mHardwareBufferID);
 }
Esempio n. 10
0
 public static void BufferData(/* final */ GL11 pGL11, /* final */ ByteBuffer pByteBuffer, /* final */ int pUsage)
 {
     pGL11.GlBufferData(GL11Consts.GlArrayBuffer, pByteBuffer.Capacity(), pByteBuffer, pUsage);
 }
Esempio n. 11
0
 public static void VertexZeroPointer(/* final */ GL11 pGL11)
 {
     pGL11.GlVertexPointer(2, GL10Consts.GlFloat, 0, 0);
 }
Esempio n. 12
0
 public static void TexCoordZeroPointer(/* final */ GL11 pGL11)
 {
     pGL11.GlTexCoordPointer(2, GL10Consts.GlFloat, 0, 0);
 }
Esempio n. 13
0
 public static void DeleteBuffer(/* final */ GL11 pGL11, /* final */ int pHardwareBufferID)
 {
     GLHelper.HARDWAREBUFFERID_CONTAINER[0] = pHardwareBufferID;
     pGL11.GlDeleteBuffers(1, GLHelper.HARDWAREBUFFERID_CONTAINER, 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);
                }
            }

        }