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"); } } }
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(); }