RyuKen/Ryujinx.Graphics/Gal/IGalRenderer.cs

74 lines
2 KiB
C#
Raw Normal View History

2018-02-04 23:08:20 +00:00
using System;
using System.Collections.Generic;
2018-02-04 23:08:20 +00:00
namespace Ryujinx.Graphics.Gal
2018-02-04 23:08:20 +00:00
{
public unsafe interface IGalRenderer
2018-02-04 23:08:20 +00:00
{
void QueueAction(Action ActionMthd);
2018-02-04 23:08:20 +00:00
void RunActions();
void Render();
void SetWindowSize(int Width, int Height);
//Blend
void SetBlendEnable(bool Enable);
void SetBlend(
GalBlendEquation Equation,
GalBlendFactor FuncSrc,
GalBlendFactor FuncDst);
void SetBlendSeparate(
GalBlendEquation EquationRgb,
GalBlendEquation EquationAlpha,
GalBlendFactor FuncSrcRgb,
GalBlendFactor FuncDstRgb,
GalBlendFactor FuncSrcAlpha,
GalBlendFactor FuncDstAlpha);
//Frame Buffer
void CreateFrameBuffer(long Tag, int Width, int Height);
void BindFrameBuffer(long Tag);
void BindFrameBufferTexture(long Tag, int Index, GalTextureSampler Sampler);
void SetFrameBuffer(long Tag);
void SetFrameBuffer(byte[] Data, int Width, int Height);
void SetFrameBufferTransform(float SX, float SY, float Rotate, float TX, float TY);
//Rasterizer
void ClearBuffers(int RtIndex, GalClearBufferFlags Flags);
void SetVertexArray(int VbIndex, int Stride, byte[] Buffer, GalVertexAttrib[] Attribs);
void SetIndexArray(byte[] Buffer, GalIndexFormat Format);
void DrawArrays(int VbIndex, GalPrimitiveType PrimType);
void DrawElements(int VbIndex, int First, GalPrimitiveType PrimType);
//Shader
void CreateShader(long Tag, GalShaderType Type, byte[] Data);
IEnumerable<ShaderDeclInfo> GetTextureUsage(long Tag);
void SetConstBuffer(long Tag, int Cbuf, byte[] Data);
void SetUniform1(string UniformName, int Value);
void BindShader(long Tag);
void BindProgram();
//Texture
void SetTextureAndSampler(int Index, GalTexture Texture, GalTextureSampler Sampler);
void BindTexture(int Index);
2018-02-04 23:08:20 +00:00
}
}