我想使用这个GLWidget的事情来开发使用OpenTK和GTK#,这似乎是一件好事,但遗憾的是,它旁边没有任何文档。我试图了解如何在该Widget中渲染任何东西。到目前为止,我创建了monodevelop解决方案,添加了对OpenTK和GLWidget的引用,现在我在Stetic的工具窗格中看到了GLWidget,我添加了一个带有两个插槽的Vbox,在上面一个中添加了一个菜单栏,着名的GLWidget。我还为OnRender事件和初始化事件创建了一个事件处理程序,但我甚至无法绘制三角形。有没有人曾与GLWidget合作过,可以给我一些建议?这里是我的MainWindow.cs代码:如何在Monodevelop中使用OpenTK GLWidget进行渲染?
using System;
using Gtk;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using OpenTK.Audio;
using OpenTK.Audio.OpenAL;
using OpenTK.Input;
public partial class MainWindow : Gtk.Window{
public MainWindow() : base(Gtk.WindowType.Toplevel)
{
Build();
}
protected void GLWidgetInitialize (object sender, System.EventArgs e)
{
int width = 0, height = 0;
//glwidget7.GdkWindow.GetSize(out width, out height);
this.vbox3.GetSizeRequest(out width, out height);
GL.Viewport(0, 0, width, height);
GL.ClearColor(1.0f, 1.0f,1.0f,1.0f);
GL.Clear(ClearBufferMask.ColorBufferBit);
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit();
a.RetVal = true;
}
protected void OnRenderFrameWidget (object sender, System.EventArgs e)
{
GL.ClearColor(1.0f, 1.0f,1.0f,1.0f);
GL.Begin(BeginMode.Triangles);
GL.Color3(1.0f, 1.0f, 0.0f); GL.Vertex3(-1.0f, -1.0f, 4.0f);
GL.Color3(1.0f, 0.0f, 0.0f); GL.Vertex3(1.0f, -1.0f, 4.0f);
GL.Color3(0.2f, 0.9f, 1.0f); GL.Vertex3(0.0f, 1.0f, 4.0f);
GL.End();
}
}
顺便提一下,更换GLClearColor值确实让我GLWidget改变背景颜色。
你需要设置投影机(相机) - 另外,请浏览www.opentk.com网站上的介绍文档。在渲染的第一部分中有简单的“绘制三角形”样本。 – holtavolt 2012-03-20 02:49:18
感谢您的评论,我看到了这些示例,但它们仅适用于GameWindow,不适用于GLWidget。 – Samssonart 2012-03-20 17:22:10