4

我的 C# OpenTK 屏幕保护程序应用程序有一个非常奇怪的问题。当我在更改扩展名之前编译程序并运行它时,作为 EXE 文件,它可以正常工作。但是当我将扩展名更改为 SCR 并运行它时,它会因 System.EntryPointNotFound 异常而崩溃(在本例中为 glCreateProgram 函数)。在调试器中,我检查了运行时:

作为 EXE 文件:GL.GetString(StringName.Vendor) -> "Intel" GL.GetString(StringName.Version) -> "2.1.0 - Build 8.15.10.2622"

作为 SCR 文件: GL.GetString(StringName.Vendor) -> "Microsoft" GL.GetString(StringName.Version) -> "1.1.0"

在我的应用程序中,我使用 GameWindow 类的无参数构造函数来创建 OpenGL 上下文。对于小实验,我将扩展名更改为 BAT,它运行得非常好。我不知道为什么我的 OpenGL 上下文取决于文件扩展名,我猜屏幕保护程序是由系统在某种覆盖上执行的,但我真的找不到解决这个问题的方法。

有任何想法吗?

4

1 回答 1

1

最后,经过长时间的搜索,我发现英特尔阻止了使用 OpenGL 对屏幕保护程序的硬件支持。我已将扩展名更改为“sCr”以欺骗驱动程序,现在一切正常。

链接: opengl.org 论坛

于 2012-03-26T07:06:33.773 回答