示例#1
0
 public MemoryImageWriter(IMemoryReaderWriter imageWriter, int width, int bufferWidth)
 {
     this.imageWriter = imageWriter;
     minWidth         = System.Math.Min(width, bufferWidth);
     skipWidth        = System.Math.Max(0, bufferWidth - width);
     x = 0;
 }
示例#2
0
        public static IMemoryReaderWriter getImageWriter(int address, int width, int bufferWidth, int pixelFormat)
        {
            int step = pspsharp.graphics.RE.IRenderingEngine_Fields.sizeOfTextureType[pixelFormat];
            IMemoryReaderWriter imageWriter = MemoryReaderWriter.getMemoryReaderWriter(address, step);

            switch (pixelFormat)
            {
            case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_ABGR4444:
                imageWriter = new PixelFormat4444Encoder(imageWriter);
                break;

            case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_ABGR5551:
                imageWriter = new PixelFormat5551Encoder(imageWriter);
                break;

            case GeCommands.TPSM_PIXEL_STORAGE_MODE_16BIT_BGR5650:
                imageWriter = new PixelFormat565Encoder(imageWriter);
                break;

            case GeCommands.TPSM_PIXEL_STORAGE_MODE_32BIT_ABGR8888:
                // We can use directly the MemoryReaderWriter, no format convertion needed.
                break;

            case BaseRenderer.depthBufferPixelFormat:
                // We can use directly the MemoryReaderWriter, no format convertion needed.
                break;
            }

            if (bufferWidth > width)
            {
                imageWriter = new MemoryImageWriter(imageWriter, width, bufferWidth);
            }

            return(imageWriter);
        }
示例#3
0
        public override int ioRead(TPointer outputPointer, int outputLength)
        {
            int readLength = base.ioRead(outputPointer, outputLength);

            if (readLength > 0)
            {
                IMemoryReaderWriter memoryReaderWriter = MemoryReaderWriter.getMemoryReaderWriter(outputPointer.Address, readLength, 1);
                for (int i = 0; i < readLength; i++)
                {
                    int value = memoryReaderWriter.readCurrent();
                    value ^= xor;
                    memoryReaderWriter.writeNext(value);
                }
                memoryReaderWriter.flush();
            }

            return(readLength);
        }
示例#4
0
 public PixelFormat565Encoder(IMemoryReaderWriter memoryReaderWriter)
 {
     this.memoryReaderWriter = memoryReaderWriter;
 }
示例#5
0
 public RendererWriterGeneric(int fbAddress, int fbBufferWidth, int fbPixelFormat, int depthAddress, int depthBufferWidth, int depthPixelFormat)
 {
     fbWriter    = ImageWriter.getImageWriter(fbAddress, fbBufferWidth, fbBufferWidth, fbPixelFormat);
     depthWriter = ImageWriter.getImageWriter(depthAddress, depthBufferWidth, depthBufferWidth, depthPixelFormat);
 }
示例#6
0
 public RendererWriterGenericNoDepth(int fbAddress, int fbBufferWidth, int fbPixelFormat)
 {
     fbWriter = ImageWriter.getImageWriter(fbAddress, fbBufferWidth, fbBufferWidth, fbPixelFormat);
 }