BasicOpenGL.axaml代码

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="AvaloniaUI.BasicOpenGL"
         xmlns:local="using:AvaloniaUI"
        Title="BasicOpenGL">
    <Grid>
        <local:OpenTkGlControl/>
    </Grid>
</Window>

BasicOpenGL.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.OpenGL;
using Avalonia.OpenGL.Controls;
using Avalonia.Rendering;
using Avalonia.Threading;
using OpenTK;
using OpenTK.Graphics.OpenGL;
using System;

namespace AvaloniaUI;

public sealed class OpenTkGlControl : OpenGlControlBase
{
    private double t;

    protected override void OnOpenGlInit(GlInterface gl)
    {
        GL.LoadBindings(new BindingsContext(gl));
        GL.Disable(EnableCap.DepthTest);
    }

    protected override void OnOpenGlDeinit(GlInterface gl)
    {
        // Release GL resources here.
    }

    protected override void OnOpenGlRender(GlInterface gl, int fb)
    {
        if (!IsVisible)
            return;

        RequestNextFrameRendering();

        t += 0.016;

        var r = 0.3f + 0.3f * (float)Math.Sin(t);
        var g = 0.3f + 0.3f * (float)Math.Sin(t + 2);
        var b = 0.3f + 0.3f * (float)Math.Sin(t + 4);

        var width = Math.Max(1, (int)Bounds.Width);
        var height = Math.Max(1, (int)Bounds.Height);

        GL.Viewport(0, 0, width, height);
        GL.ClearColor(r, g, b, 1f);
        GL.Clear(ClearBufferMask.ColorBufferBit);
    }

    private sealed class BindingsContext(GlInterface gl) : IBindingsContext
    {
        public IntPtr GetProcAddress(string procName) => gl.GetProcAddress(procName);
    }
}
public partial class BasicOpenGL : Window
{
    public BasicOpenGL()
    {
        InitializeComponent();
    }
}

运行效果

image

 

posted on 2026-08-03 06:40  dalgleish  阅读(9)  评论(0)    收藏  举报