3D太阳系 系统的OpenGL C#实例_3D太阳系实例
简介
你好,这是一个3D太阳能系统实现用OpenGL和C#。我想是因为这个演示它仅用于教育目的
以保持它的简单。它包含了太阳,行星,我们的月亮,行星的轨道和一些明星
它被编程在Visual Studio 2008和我有它升级到Visual Studio 2010中、没有任何形式问题
我用这个演示陶宏命名空间,它是OpenGL的DLL和NET框架之间的互操作性
我也用Shadowengine,由我开发摆脱了硬编码的纹理加载,其中包括图形上下文的初始化乏味的,你一个小图形框架
太阳系看形式看一个3D的程序员点
那么,做了太阳能系统包含?行星,孙卫星,宇宙的背景等作为3D程序员,你应该觉得你将如何把这些实体编程环境的星星
例如,宇宙是全黑与具有黑色背景,你会解决这个问题。 OpenGL的具有该功能已经Gl.glClearColor(0,0,0,1)
红,绿,蓝阿尔法将背景色设置为黑色。关于明星,他们只是亮点,然后你可以利用OpenGL图元的处理点的绘制
您可以利用随机函数产生了很多明星,如果你懒得把他们一个接一个
你只需要确保他们不属于太阳系内部。行星只是球的纹理;他们也有轨道,并在其自身的轴线旋转
所以你必须跟踪这些变量的使用和更新它们,因为它们随时间改变。如果你不想让球在3D Max中
你可以使用OpenGL二次曲面,因为它定义了一套基本的三角形状,也定义纹理坐标为他们
卫星的行星,唯一的区别是,他们的旋转轴位于没有太阳的行星一样
源代码 MainForm.cs
hdc = (uint)pnlViewPort.Handle; string error = ""; OpenGLControl.OpenGLInit(ref hdc, pnlViewPort.Width, pnlViewPort.Height, ref error);在这里,它的代码的装入纹理转换成OpenGL的内存:
ContentManager.SetTextureList("texturas\"); ContentManager.LoadTextures();我的小引擎负责加载所有位于该文件夹中的纹理,纹理格式acepted是TGA的JPG和BMP
纹理可能不NPOT(两个非动力),仍然会正确加载。、在这里,它绘制的所有场景中的代码:
private void tmrPaint_Tick(object sender, EventArgs e) { // clears OpenGL Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); //updates the camera solarSystem.Camara.Update(moving); //draws the scene solarSystem.DrawsScene(); //swaps buffers Winapi.SwapBuffers(hdc); //finish drawing operations Gl.glFlush(); }
源代码 Planet.cs
public void DrawOrbit() { Gl.glBegin(Gl.GL_LINE_STRIP); for (int i = 0; i < 361; i++) { Gl.glVertex3f(p.x * (float)Math.Sin(i * Math.PI / 180), 0, p.x * (float)Math.Cos(i * Math.PI / 180)); } Gl.glEnd(); }
源代码 Satellite.cs SolarSystem.cs Sun.cs 请下载下面的分享
源代码 Star.cs
public void CreateStars(int amount) { Random r = new Random(); int count = 0; while (count != amount) { Position p = default(Position); p.x = (r.Next(110)) * (float)Math.Pow(-1, r.Next()); p.z = (r.Next(110)) * (float)Math.Pow(-1, r.Next()); p.y = (r.Next(110)) * (float)Math.Pow(-1, r.Next()); if (Math.Pow(Math.Pow(p.x, 2) + Math.Pow(p.y, 2) + Math.Pow(p.z, 2), 1 / 3f) > 15) { stars.Add(p); count++; } } }最后再给大家献上源代码链接: http://dwtedx.com/download.html?bdkey=s/1o6yTBlS 密码: g3ls
上一篇: mysql zip 安装失败怎么办
下一篇: java培训学费要多少