SharpGL 是一个允许开发者在 Windows Forms 或 WPF 应用程序中轻松使用 OpenGL 的项目。它包含了所有 OpenGL 函数直到最新的 4.2 版本,所有主要的扩展,一个强大的场景图和 Visual Studio 的项目模板。这意味着拥有了创建引人入胜的 3D 应用程序或将现有代码移植到新平台所需的所有工具。
如果没有时间阅读 SharpGL 的介绍,可以查看 以快速上手。
让先看一些截图来直观了解 SharpGL 的功能:
SharpGL 是一个类库集合,让能够在代码中使用 OpenGL 功能。类库包括:
这些库之间,SharpGL 提供了对所有当前 OpenGL 函数、所有主要扩展和一系列高级功能的丰富对象的包装。可以使用 SharpGL 进行“传统”的 OpenGL 绘图,或者使用 SceneGraph 来实现更具体的应用程序任务。
如何使用 SharpGL 非常简单!如果有如下代码块:
glLineWidth(3.0f);
glPointSize(2.0f);
那么使用 SharpGL 可以这样写:
OpenGL gl = openGLCtrl1.OpenGL;
gl.LineWidth(3.0f);
gl.PointSize(2.0f);
这是第一个基本规则 - 任何以 'gl' 或 'glu' 开头的 OpenGL 函数都是 SharpGL.OpenGL 对象的成员函数,'gl' 或 'glu' 被移除。
这处理了最基本的函数 - 然而,这个规则有一个例外。下面的代码:
glColor3f(0.5f, 0.5f, 0.5f);
glVertex3f(2.0f, 3.0f, 4.0f);
glVertex4f(2.0f, 1.0f, 10.0f, 1.0f);
将被写成:
gl.Color3(0.5f, 0.5f, 0.5f);
gl.Vertex3(2.0f, 3.0f, 4.0f);
gl.Vertex4(2.0f, 1.0f, 10.0f, 1.0f);
注意函数名后没有 'f'。这是第二个基本规则 - SharpGL 包装器函数从不带有类型后缀。
这处理了以基本类型为参数的函数。对于其他类型的函数,还有一件事要记住。下面的代码:
glPolygonMode(GL_FRONT, GL_FILL);
可以写成:
gl.PolygonMode(OpenGL.GL_FRONT, OpenGL.GL_FILL);
或者:
gl.PolygonMode(PolygonFace.Front, PolygonMode.Fill);
这描述了最后一个基本规则。OpenGL 常量都被定义为 SharpGL.OpenGL 类的常量成员,并且具有完全相同的名字。
使用 SharpGL 编码非常简单。将注意到的一些好处包括:
第一 SharpGL 应用程序可以在五分钟内运行 - 这里是如何做到的:
随模板提供的代码为做了基本的工作 - 并且源代码中提供了许多示例应用程序作为自己项目的基线。