Exemple #1
0
        public override void PrimStart(GlobalGpuState globalGpuState, GpuStateStruct *gpuState,
                                       GuPrimitiveType primitiveType)
        {
            GpuState       = gpuState;
            _primitiveType = primitiveType;
            _doPrimStart   = true;
            ResetVertex();


            if (_shader != null)
            {
                _shader.GetUniform("lopEnabled").Set(gpuState->LogicalOperationState.Enabled);

                if (gpuState->LogicalOperationState.Enabled)
                {
                    if (_logicOpsRenderTarget == null)
                    {
                        _logicOpsRenderTarget = GLRenderTarget.Create(512, 272, RenderTargetLayers.Color);
                    }
                    GLRenderTarget.CopyFromTo(GLRenderTarget.Current, _logicOpsRenderTarget);
                    _shader.GetUniform("backtex").Set(GLTextureUnit.CreateAtIndex(1).SetFiltering(GLScaleFilter.Linear)
                                                      .SetWrap(GLWrap.ClampToEdge).SetTexture(_logicOpsRenderTarget.TextureColor));

                    _shader.GetUniform("lop").Set((int)gpuState->LogicalOperationState.Operation);

                    //new Bitmap(512, 272).SetChannelsDataInterleaved(LogicOpsRenderTarget.ReadPixels(), BitmapChannelList.RGBA).Save(@"c:\temp\test.png");
                }
            }
        }
        public GLRenderTarget CreateRenderTarget()
        {
            fOutputTarget = new GLRenderTarget(GI);
            fOutputTarget.AttachColorBuffer(OutputTexture, ColorBufferAttachPoint.Position0);
            fOutputTarget.Unbind();

            return fOutputTarget;
        }
Exemple #3
0
            private void UpdateTextures(int scaleViewport)
            {
                if (_currentScaleViewport == scaleViewport)
                {
                    return;
                }
                _currentScaleViewport   = scaleViewport;
                _mustUpdateRenderTarget = false;

                RenderTarget?.Dispose();

                RenderTarget = GLRenderTarget.Create(
                    Width    = 512 * scaleViewport,
                    Height   = 272 * scaleViewport
                    );
                //Console.WriteLine(OpenglContextFactory.Current);
                //Console.WriteLine(RenderTarget);
                //Console.ReadKey();
            }