Ejemplo n.º 1
0
 public void DrawDecalQuad(DecalInstance decal)
 {
     Gl.BindTexture(TextureTarget.Texture2d, (uint)decal.decal.id);
     Gl.Begin(PrimitiveType.Quads);
     Gl.Color4(decal.tint.r, decal.tint.g, decal.tint.b, decal.tint.a);
     Gl.TexCoord4(decal.uv[0].x, decal.uv[0].y, 0.0f, decal.w[0]); Gl.Vertex2(decal.pos[0].x, decal.pos[0].y);
     Gl.TexCoord4(decal.uv[1].x, decal.uv[1].y, 0.0f, decal.w[1]); Gl.Vertex2(decal.pos[1].x, decal.pos[1].y);
     Gl.TexCoord4(decal.uv[2].x, decal.uv[2].y, 0.0f, decal.w[2]); Gl.Vertex2(decal.pos[2].x, decal.pos[2].y);
     Gl.TexCoord4(decal.uv[3].x, decal.uv[3].y, 0.0f, decal.w[3]); Gl.Vertex2(decal.pos[3].x, decal.pos[3].y);
     Gl.End();
 }
 public void DrawDistortedSprite(SegaSaturnDistortedSprite sprite)
 {
     if (sprite.TextureId.HasValue)
     {
         Gl.Enable(EnableCap.Texture2d);
         Gl.BindTexture(TextureTarget.Texture2d, sprite.TextureId.Value);
     }
     Gl.Color4(1.0f, 1.0f, 1.0f, sprite.UseHalfTransparency ? 0.5f : 1.0f);
     Gl.Begin(PrimitiveType.Quads);
     if (sprite.TextureId.HasValue)
     {
         Gl.TexCoord2(0.0, 0.0);
     }
     else
     {
         Gl.Color3(1.0f, 0.0f, 0.0f);
     }
     Gl.Vertex3(sprite.A.FloatX, sprite.A.FloatY, sprite.A.FloatZ);
     if (sprite.TextureId.HasValue)
     {
         Gl.TexCoord2(1.0, 0.0);
     }
     else
     {
         Gl.Color3(0.0f, 1.0f, 0.0f);
     }
     Gl.Vertex3(sprite.B.FloatX, sprite.B.FloatY, sprite.B.FloatZ);
     if (sprite.TextureId.HasValue)
     {
         Gl.TexCoord2(1.0, 1.0);
     }
     else
     {
         Gl.Color3(0.0f, 0.0f, 1.0f);
     }
     Gl.Vertex3(sprite.C.FloatX, sprite.C.FloatY, sprite.C.FloatZ);
     if (sprite.TextureId.HasValue)
     {
         Gl.TexCoord2(0.0, 1.0);
     }
     else
     {
         Gl.Color3(1.0f, 0.0f, 1.0f);
     }
     Gl.Vertex3(sprite.D.FloatX, sprite.D.FloatY, sprite.D.FloatZ);
     Gl.End();
     if (sprite.TextureId.HasValue)
     {
         Gl.Disable(EnableCap.Texture2d);
     }
 }
Ejemplo n.º 3
0
 public void DrawLayerQuad(VectorF2d offset, VectorF2d scale, Pixel tint)
 {
     Gl.Begin(PrimitiveType.Quads);
     Gl.Color4(tint.r, tint.g, tint.b, tint.a);
     Gl.TexCoord2(0.0f * scale.x + offset.x, 1.0f * scale.y + offset.y);
     Gl.Vertex3(-1.0f /*+ vSubPixelOffset.x*/, -1.0f /*+ vSubPixelOffset.y*/, 0.0f);
     Gl.TexCoord2(0.0f * scale.x + offset.x, 0.0f * scale.y + offset.y);
     Gl.Vertex3(-1.0f /*+ vSubPixelOffset.x*/, 1.0f /*+ vSubPixelOffset.y*/, 0.0f);
     Gl.TexCoord2(1.0f * scale.x + offset.x, 0.0f * scale.y + offset.y);
     Gl.Vertex3(1.0f /*+ vSubPixelOffset.x*/, 1.0f /*+ vSubPixelOffset.y*/, 0.0f);
     Gl.TexCoord2(1.0f * scale.x + offset.x, 1.0f * scale.y + offset.y);
     Gl.Vertex3(1.0f /*+ vSubPixelOffset.x*/, -1.0f /*+ vSubPixelOffset.y*/, 0.0f);
     Gl.End();
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Apply this depth test render state.
        /// </summary>
        /// <param name="ctx">
        /// A <see cref="GraphicsContext"/> which has defined the shader program <paramref name="shaderProgram"/>.
        /// </param>
        /// <param name="shaderProgram">
        /// The <see cref="ShaderProgram"/> which has the state set.
        /// </param>
        public override void ApplyState(GraphicsContext ctx, ShaderProgram shaderProgram)
        {
            CheckCurrentContext(ctx);

            if (shaderProgram == null)
            {
                // Fixed pipeline rendering requires server state

                Gl.Color4((float[])UniformColor);
            }
            else
            {
                // Base implementation
                base.ApplyState(ctx, shaderProgram);
            }
        }
Ejemplo n.º 5
0
        private void RenderQuad(RectangleF texels, Rectangle area, Color4 color)
        {
            Gl.Color4(color.R, color.G, color.B, color.A);
            Gl.TexCoord2(texels.X, texels.Y);
            Gl.Vertex2(area.X, area.Y);
            Gl.TexCoord2(texels.Width, texels.Y);
            Gl.Vertex2(area.Right, area.Y);
            Gl.TexCoord2(texels.Width, texels.Height);
            Gl.Vertex2(area.Right, area.Bottom);

            Gl.TexCoord2(texels.Width, texels.Height);
            Gl.Vertex2(area.Right, area.Bottom);
            Gl.TexCoord2(texels.X, texels.Height);
            Gl.Vertex2(area.X, area.Bottom);
            Gl.TexCoord2(texels.X, texels.Y);
            Gl.Vertex2(area.X, area.Y);
        }