我一直在使用OpenTK,并且很好地遵循了示例/教程。
我真的想让OpenGL呈现在窗口的更小的部分,所以我一直在尝试使用GLWpfControl,我想在没有XAML的情况下这样做,但我无法正常运行它。
我一直试图让它从控制台模板通过dotnet运行。这是我的代码:
using System;
using System.Windows;
using OpenTK.Wpf;
using OpenTK.Graphics.OpenGL;
namespace Test {
public class MyWindow : Window {
[STAThread]
public static void Main() {
Application app = new Application();
app.Run(new MyWindow());
}
public MyWindow() {
GLWpfControl wpfControl = new GLWpfControl();
wpfControl.Render += GLWpfOnRender;
this.Content = wpfControl;
var settings = new GLWpfControlSettings();
wpfControl.Start(settings);
}
void GLWpfOnRender(TimeSpan delta) {
Console.WriteLine(delta.TotalMilliseconds);
GL.ClearColor(1.0f, 0.0f, 0.0f, 1.0f);
GL.Clear(ClearBufferMask.ColorBufferBit);
}
}
}
我预计控件将呈现红色,但它是黑色的。如果没有调用Start(),它就不是黑色的,并且在调用Start()之后会反复调用GLWpfOnRender。
下面是.csproj文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<RootNamespace>test_2</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="OpenTK" Version="4.7.4" />
<PackageReference Include="OpenTK.GLWpfControl" Version="4.2.2" />
</ItemGroup>
</Project>
我想我错过了在使用XAML时调用InitializeComponent()时可能会做的事情。我读了很多书,但我很困惑。
下面是我要复制的内容的链接:https://github.com/opentk/GLWpfControl/tree/aefe945f65e4659bd6f9f82083a4a746c2fb03fc/src
编辑:我继承和覆盖了GLWpfControl,并且能够使用DrawingContext打印文本和做各种事情。所以GL没有因为任何原因和控制一起工作?
发布于 2022-07-22 01:12:12
好吧我让它起作用了。事实证明,有一些已知的问题,两个显卡/英特尔高清图形。我的GPU坏了。启用后,就可以正常工作了。首先,我没有检查github上的问题选项卡,这是我自己的错误。
https://stackoverflow.com/questions/73060252
复制相似问题