![](http://img.e-com-net.com/image/info5/01da4fe8b732431193de08eeda12400e.jpg)
alternative version
- Download SharpGL 2.0 Source Code.zip - 2.82 MB
- Download SharpGL 2.0 Samples.zip - 739.87 KB
- Download SharpGL 2.0 Binaries.zip - 782.87 KB
- Download SharpGL 2.0 Visual_Studio_Extension.zip - 376.99 KB
http://www.ltesting.net/ceshi/ruanjianceshikaifajishu/rjcskfyy/dotnet/2007/0630/97945.html
http://gameres.com/
微软提供较少的标准支持,对于和他们竞争的东西—比如CORBA(COM的竞争对手)和OpenGL(DirectX的竞争对手)。 不过在C#中实现Opengl也并非没有可能,有很多很好的第3方库可以使用,这里列举2个。
(1)CsGL http://csgl.sourceforge.net/index.html 名气较大的o
微软提供较少的标准支持,对于和他们竞争的东西—比如CORBA(COM的竞争对手)和OpenGL(DirectX的竞争对手)。
不过在C#中实现Opengl也并非没有可能,有很多很好的第3方库可以使用,这里列举2个。
(1)CsGL
http://csgl.sourceforge.net/index.html
名气较大的opengl库,有稳定版本。sf上的项目地址http://sourceforge.net/project/showfiles.php?group_id=33241。
目前有多个3D引擎项目使用的这个库。
(2)CSopenGL
http://sourceforge.net/projects/csopengl/
http://www.ia.hiof.no/gb/ptools/csharp/p-csharp.html
有较详细的文档和例子。sf上的项目地址http://sourceforge.net/project/showfiles.php?group_id=54966&package_id=49782。
CSopenGL的一个例子(我在VS2005上编译)
-------form1.cs-------
#region Using directives using System; using System.Collections.Generic; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using CSOpenGL; #endregion namespace opentest { partial class Form1 : System.Windows.Forms.Form { //private System.ComponentModel.Container components = null; private GLView view; public Form1() { InitializeComponent(); view = new GLView(); view.Parent = this; view.CreateControl(); view.Dock = DockStyle.Fill; view._OnPaint = new Painter(); } /* protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } view.Dispose(); } base.Dispose(disposing); } */ private void Form1_Load(object sender, EventArgs e) { } } public class Painter : GLViewPainter { public Painter() { } public override void Paint(GLView view) { glViewport(0, 0, view.Width, view.Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f, 1.0f, 0.1f, 100.0f); glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //drawPyramid(); //drawSphere(); drawCube(); glFlush(); } private void drawPyramid() { glLoadIdentity(); glTranslatef(-0.2f, 0.3f, -4.0f); glRotatef(45.0f, 1.0f, 1.0f, 1.0f); glBegin(GL_TRIANGLES); // front face triangle: glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); // right face triangle: glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(1.0f, -1.0f, -1.0f); //back face triangle: glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(1.0f, -1.0f, -1.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // left face triangle: glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glEnd(); } private void drawCube() { // enable color blending: glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glLoadIdentity(); glTranslatef(0.0f, 0.2f, -6.0f); glRotatef(45.0f, 1.0f, 1.0f, 1.0f); glBegin(GL_QUADS); // tegner først de sidene som ikke skal være gjennomsiktige: //the back: glColor4f(1.0f, 1.0f, 0.0f, 1.0f); // yellow glVertex3f(1.0f, -1.0f, -1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(1.0f, 1.0f, -1.0f); //the bottom: glColor4f(1.0f, 0.5f, 0.0f, 1.0f); // orange glVertex3f(1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f(1.0f, -1.0f, -1.0f); //the right face: glColor4f(1.0f, 0.0f, 1.0f, 0.75f); // cyan glVertex3f(1.0f, 1.0f, -1.0f); glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); glVertex3f(1.0f, -1.0f, -1.0f); // de sidene som skal være gjennomsiktige: // setter DepthBuffer read-only: glDepthMask(0); //the front: glColor4f(1.0f, 0.0f, 0.0f, 0.75f); // red glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); //the top: glColor4f(0.0f, 1.0f, 0.0f, 0.75f); // green glVertex3f(1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); //the left face: glColor4f(0.0f, 0.0f, 1.0f, 0.75f); // blue glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glEnd(); glDepthMask(1); glDisable(GL_BLEND); } private void drawSphere() { float[] ambient = { 1.0f, 1.0f, 0.0f, 1.0f }; float[] diffuse = { 1.0f, 1.0f, 0.0f, 1.0f }; float[] specular = { 1.0f, 1.0f, 1.0f, 1.0f }; float[] position = { 4.0f, 0.0f, 6.0f, 0.0f }; glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, specular); glLightfv(GL_LIGHT0, GL_POSITION, position); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); gluLookAt(-4.0, -5.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); IntPtr hdc = gluNewQuadric(); gluSphere(hdc, 2.0, 40, 40); gluDeleteQuadric(hdc); } } }
#region Using directives using System; using System.Collections.Generic; using System.Windows.Forms; #endregion namespace opentest { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.EnableRTLMirroring(); Application.Run(new Form1()); } } }
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1791625
===================
(3)其他开发包:OPENTK
http://sourceforge.net/projects/opentk/
还在支持。。。。非常不错。
有最新版本呢。
具体实例.跟着下面的网站..很有名的..作者的态度太让人佩服了..
http://nehe.gamedev.net/ 左边的 OpenGL Tutorials .. 一定要仔细的学
线性代数不好..看下面的网站.
http://chortle.ccsu.edu/VectorLessons/vectorIndex.html
openGL 官方红书手册
http://www.parallab.uib.no/SGI_bookshelves/SGI_Developer/books/OpenGL_RM/sgi_html/bk02.html
如果有不懂的wgl glut glu 函数 去 http://msdn.microsoft.com/library/ 查
跨平台的引擎,ANDROID,WINDOWS ,LINUX.
http://sourceforge.net/projects/softpixelengine/files/