private unsafe static void exeDR_AREA(PSX_LIBGPU.DR_AREA *ObjPtr) { PSXGPU.drAreaX = (Int32)(ObjPtr->code[1] >> 16); if (PSXGPU.drAreaX != 0) { GL.Viewport(new Rect(0f, 0f, (Single)PSXTextureMgr.GEN_TEXTURE_W, (Single)PSXTextureMgr.GEN_TEXTURE_H)); GL.LoadIdentity(); Matrix4x4 mat = Matrix4x4.Ortho(0f, (Single)PSXTextureMgr.GEN_TEXTURE_W, 0f, (Single)PSXTextureMgr.GEN_TEXTURE_H, FieldMap.HalfScreenWidth, 65536f); mat.m22 = -1f; mat.m23 = 0f; GL.LoadProjectionMatrix(mat); PSXGPU.drOffset.x = PSXGPU.drOffset.x - (Single)PSXTextureMgr.GEN_TEXTURE_X; PSXGPU.drOffset.y = PSXGPU.drOffset.y - (Single)PSXTextureMgr.GEN_TEXTURE_Y; PSXGPU.curRenderTexture = RenderTexture.active; RenderTexture.active = PSXTextureMgr.genTexture; } else { SFX.ResetViewPort(); if (SFX.isDebugPng) { Texture2D texture2D = new Texture2D(PSXTextureMgr.GEN_TEXTURE_W, PSXTextureMgr.GEN_TEXTURE_H, TextureFormat.ARGB32, false); texture2D.ReadPixels(new Rect(0f, 0f, (Single)PSXTextureMgr.GEN_TEXTURE_W, (Single)PSXTextureMgr.GEN_TEXTURE_H), 0, 0); texture2D.Apply(); Byte[] bytes = texture2D.EncodeToPNG(); File.WriteAllBytes("Temp/gen.png", bytes); } RenderTexture.active = PSXGPU.curRenderTexture; } }
private unsafe static void DR_AREA(PSX_LIBGPU.DR_AREA *obj) { SFXRender.PushCommandBuffer(); Int32 num = (Int32)(obj->code[1] >> 16); if (num != 0) { SFXMeshBase.drOffsetX -= PSXTextureMgr.GEN_TEXTURE_X; SFXMeshBase.drOffsetY -= PSXTextureMgr.GEN_TEXTURE_Y; SFXRender.commandBuffer.Add(new SFXRenderTextureBegin()); } else { SFXRender.commandBuffer.Add(new SFXRenderTextureEnd()); } }