【问题标题】:OpenTK: Why is GraphicsMode not available?OpenTK:为什么 GraphicsMode 不可用?
【发布时间】:2020-10-26 10:03:32
【问题描述】:

刚开始学习OpenTK,在浏览this tutorial时偶然发现了一个问题。

这是我尝试过的:

using System;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Windowing.Desktop;
using OpenTK.Windowing.GraphicsLibraryFramework;
namespace Testing
{
    public class GraphicsWindow : GameWindow
    {
        public GraphicsWindow(int width, int height, string title) : base(width, height, GraphicsMode.Default, title)
        {
            
        }
    }
}

由于某种原因找不到 Enum GraphicsMode(应该在命名空间 OpenTK.Graphics 中找到)。另一个是 GameWindow 没有带 4 个参数的构造函数。

我已经安装了最新版本的 OpenTK Nuget 包 (4.0.6)。我创建的项目面向 .NET Core。

有什么想法吗?

【问题讨论】:

    标签: c# opengl opentk


    【解决方案1】:

    本教程基于为 .NET 框架编写的 OpenTK 3.x。 OpenTK 4.x 是为 .NET 核心编写的。在 3.x 中,GameWindowOpenTK.Graphics 命名空间的一部分。现在该类包含在OpenTK.Windowing.Desktop 中并且行为不同。构造函数有 2 个参数,GameWindowSettingsNativeWindowSettings

    namespace Testing
    {
        public class GraphicsWindow : GameWindow
        {
            public GraphicsWindow(int width, int height, string title)
                : base(
                      new GameWindowSettings(),
                      new NativeWindowSettings()
                      {
                          Size = new OpenTK.Mathematics.Vector2i(width, height),
                          Title = title
                      })
                { }
        }
    }
    

    或者创建一个静态工厂方法:

    namespace Testing
    {
        public class GraphicsWindow : GameWindow
        {
            public static GraphicsWindow New(int width, int height, string title)
            {
                GameWindowSettings setting = new GameWindowSettings();
                NativeWindowSettings nativeSettings = new NativeWindowSettings();
                nativeSettings.Size = new OpenTK.Mathematics.Vector2i(width, height);
                nativeSettings.Title = title;
                return new GraphicsWindow(setting, nativeSettings);
            }
    
            public GraphicsWindow(GameWindowSettings setting, NativeWindowSettings nativeSettings) 
                : base(setting, nativeSettings)
            {}
        }
    }
    
    var myGraphicsWindow = GraphicsWindow.New(800, 600);
    

    另见OpenTK_hello_triangle

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多