internal void PlatformApplyState(bool applyShaders) { if (_scissorRectangleDirty) { var scissorRect = _scissorRectangle; if (!IsRenderTargetBound) { scissorRect.Y = _viewport.Height - scissorRect.Y - scissorRect.Height; } GL.Scissor(scissorRect.X, scissorRect.Y, scissorRect.Width, scissorRect.Height); GraphicsExtensions.CheckGLError(); _scissorRectangleDirty = false; } // If we're not applying shaders then early out now. if (!applyShaders) { return; } if (_indexBufferDirty) { if (_indexBuffer != null) { GL.BindBuffer(BufferTarget.ElementArrayBuffer, _indexBuffer.ibo); GraphicsExtensions.CheckGLError(); } _indexBufferDirty = false; } if (_vertexBufferDirty) { if (_vertexBuffer != null) { GL.BindBuffer(BufferTarget.ArrayBuffer, _vertexBuffer.vbo); GraphicsExtensions.CheckGLError(); } } if (_vertexShader == null) { throw new InvalidOperationException("A vertex shader must be set!"); } if (_pixelShader == null) { throw new InvalidOperationException("A pixel shader must be set!"); } if (_vertexShaderDirty || _pixelShaderDirty) { ActivateShaderProgram(); _vertexShaderDirty = _pixelShaderDirty = false; } _vertexConstantBuffers.SetConstantBuffers(this, _shaderProgram); _pixelConstantBuffers.SetConstantBuffers(this, _shaderProgram); Textures.SetTextures(this); SamplerStates.PlatformSetSamplers(this); }
internal void PlatformApplyState(bool applyShaders) { if (_scissorRectangleDirty) { _scissorRectangleDirty = false; } // If we're not applying shaders then early out now. if (!applyShaders) { return; } if (_indexBufferDirty) { _indexBufferDirty = false; } // Nothing was in here for PSM //if (_vertexBufferDirty) //{ //} Textures.SetTextures(this); SamplerStates.PlatformSetSamplers(this); }
internal void PlatformApplyState(bool applyShaders) { // TODO: This was on both the OpenGL and PSM path previously - is it necessary? Threading.EnsureUIThread(); if (_scissorRectangleDirty) { _scissorRectangleDirty = false; } if (_blendStateDirty) { _blendState.PlatformApplyState(this); _blendStateDirty = false; } if (_depthStencilStateDirty) { _depthStencilState.PlatformApplyState(this); _depthStencilStateDirty = false; } if (_rasterizerStateDirty) { _rasterizerState.PlatformApplyState(this); _rasterizerStateDirty = false; } // If we're not applying shaders then early out now. if (!applyShaders) { return; } if (_indexBufferDirty) { _indexBufferDirty = false; } // Nothing was in here for PSM //if (_vertexBufferDirty) //{ //} Textures.SetTextures(this); SamplerStates.PlatformSetSamplers(this); }
internal void PlatformApplyState(bool applyShaders) { if (_scissorRectangleDirty) { var scissorRect = _scissorRectangle; if (!IsRenderTargetBound) { scissorRect.Y = PresentationParameters.BackBufferHeight - (scissorRect.Y + scissorRect.Height); } gl.scissor(scissorRect.X, scissorRect.Y, scissorRect.Width, scissorRect.Height); GraphicsExtensions.CheckGLError(); _scissorRectangleDirty = false; } // If we're not applying shaders then early out now. if (!applyShaders) { return; } if (_indexBufferDirty) { if (_indexBuffer != null) { gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _indexBuffer.ibo); GraphicsExtensions.CheckGLError(); } _indexBufferDirty = false; } if (_vertexShader == null) { throw new InvalidOperationException("A vertex shader must be set!"); } if (_pixelShader == null) { throw new InvalidOperationException("A pixel shader must be set!"); } if (_vertexShaderDirty || _pixelShaderDirty) { ActivateShaderProgram(); if (_vertexShaderDirty) { unchecked { _graphicsMetrics._vertexShaderCount++; } } if (_pixelShaderDirty) { unchecked { _graphicsMetrics._pixelShaderCount++; } } _vertexShaderDirty = _pixelShaderDirty = false; } _vertexConstantBuffers.SetConstantBuffers(this, _shaderProgram); _pixelConstantBuffers.SetConstantBuffers(this, _shaderProgram); Textures.SetTextures(this); SamplerStates.PlatformSetSamplers(this); }
/// <summary> /// /// </summary> /// <param name="applyShaders"></param> internal void PlatformApplyState(bool applyShaders) { if (_scissorRectangleDirty) { var scissorRect = _scissorRectangle; if (!IsRenderTargetBound) { scissorRect.Y = _viewport.Height - scissorRect.Y - scissorRect.Height; } GL.Scissor(scissorRect.X, scissorRect.Y, scissorRect.Width, scissorRect.Height); GraphicsExtensions.CheckGLError(); _scissorRectangleDirty = false; } if (!applyShaders) { return; } if (_indexBufferDirty) { if (_indexBuffer != null) { GL.BindBuffer(BufferTarget.ElementArrayBuffer, _indexBuffer.ibo); GraphicsExtensions.CheckGLError(); } _indexBufferDirty = false; } if (_vertexBuffersDirty) { if (_vertexBuffers.Count > 0) { GL.BindBuffer(BufferTarget.ArrayBuffer, _vertexBuffers.Get(0).VertexBuffer.vbo); GraphicsExtensions.CheckGLError(); } _vertexBuffersDirty = false; } if (_vertexShader == null) { throw new InvalidOperationException("A Vertex Shader Must Be Set!"); } if (_pixelShader == null) { throw new InvalidOperationException("A Pixel Shader Must Be Set!"); } if (_vertexShaderDirty || _pixelShaderDirty) { ActivateShaderProgram(); if (_vertexShaderDirty) { unchecked { _graphicsMetrics._vertexShaderCount++; } } if (_pixelShaderDirty) { unchecked { _graphicsMetrics._pixelShaderCount++; } } _vertexShaderDirty = _pixelShaderDirty = false; } _vertexConstantBuffers.SetConstantBuffers(this, _shaderProgram); _pixelConstantBuffers.SetConstantBuffers(this, _shaderProgram); Textures.SetTextures(this); SamplerStates.PlatformSetSamplers(this); }