我正在开发一个使用OpenTK的跨平台图形应用程序。在Windows上,我可以引用OpenTK和OpenTK.GLControl dll来初始化我的渲染上下文,特别是请求特定的[现代] OpenGL图形上下文(在本例中为OpenGL 3.3):
int major = 3;
int minor = 3;
var control = new OpenTK.GLControl(GraphicsMode.Default, major, minor, GraphicsContextFlags.Default);
Xamarin网站上有一些示例(Introduction to OpenTK和MonoMacGameView),他们演示如何使用OpenTK for Mac:
Game = new MonoMacGameView (ContentView.Frame);
ContentView = Game;
Game.Run();
然而,当我这样做,然后检查这样的OpenGL版本:
string version = GL.GetString(StringName.Version); // "2.1 INTEL-10.14.66"
string glsl = GL.GetString(StringName.ShadingLanguageVersion); // "1.20"
...我得到的东西似乎是一个过时的背景,而且,我似乎无法指明我还需要其他东西。我的系统(OS X 10.11.5,Mac mini(2014年末)Intel Iris)应该能够支持OpenGL 4.1,根据这个:https://support.apple.com/en-us/HT202823
更值得关注的是,Xamarin OpenTK示例使用立即模式(例如GL.Begin),该模式早已从OpenGL核心配置文件规范中删除。所以,我的问题是:
非常感谢任何帮助。感谢。
答案 0 :(得分:2)
您需要申请转发兼容的个人资料,将GraphicsContextFlags.Default
替换为GraphicsContextFlags.ForwardCompatible
。
我在Mac上使用OpenGL 3.3和OpenTK,继承自GameWindow
类并在构造函数中初始化上下文,如下所示:
using OpenTK;
using OpenTK.Graphics;
class Program : GameWindow
{
public Program() :
base( width, height, GraphicsMode.Default, "App Name", 0, DisplayDevice.Default, 3, 3, GraphicsContextFlags.ForwardCompatible )
{
...
我使用Xamarin Studio并从其网站下载了OpenTK,没有使用NuGet。