太阳系模型――OpenGL
2010年06月16日
OpenGL红宝书中一个例子--太阳系模型
先粘上源码:
#include "stdafx.h"
#define GLUT_DISABLE_ATEXIT_HACK
#include
#include
#include
#include
static int year = 0, day = 0;
void init()
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glPushMatrix();
glutWireSphere(1.0,20.,16);
glTranslatef(2.0,0.0,0.0);
glRotatef((GLfloat)day,0.0,1.0,0.0);
glutWireSphere(0.2,10,8);
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0,(GLsizei)w/(GLsizei)h,1.0,20.0 );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
}
void keyboard(unsigned char k, int x, int y)
{
switch(k){
case 'd':
day = (day+10)%360;
glutPostRedisplay();
break;
case 'D':
day = (day -10) % 360;
glutPostRedisplay();
break;
case 'y':
year = (year + 5) % 360;
glutPostRedisplay();
break;
case 'Y':
year = (year - 5) % 360;
glutPostRedisplay();
break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
由于最开始用的是_tmain(),编译出现了从"_TCHAR *[]"转换为"char **"出错。这个是2005默认的"使用 Unicode 字符集",解决是
"配置属性"-->"字符集"-->"使用多字节字符集"。
如果是用 main(),无需改动,改为多字符集反而出错。
改正后没有错误。但是在运行时出现找不到MSVCR80D.dll提示。解决方案:
1. 在"属性->配置属性->清单工具->常规"下有一个"使用FAT32解决办法。(注意:一定要先配置这个选项,然后再编译工程,要不然还是不好用:)
2. 找到你的工程的文件夹,如(myproject),找到其下的myproject\myproject\Debug\ myproject.rec,把它删掉(删掉整个Debug目录也可以),重新编译,搞定!
http://www.cppblog.com/LiBerTine/archive/2009/09/2 1/73323.html
最后效果如附件。
glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
x,y显示鼠标位置 glutKeyboardFunc sets the keyboard callback for the current window. When a user types into the window, each key press generating an ASCII character will generate a keyboard callback。 http://www.opengl.org/resources/libraries/glut/spe c3/node49.html
发表评论
-
硬盘安装Fedora 12
2012-01-20 08:51 779硬盘安装Fedora 12 2010年1 ... -
数据/配置 的存储方式 Json篇 以JsonCpp库使用为例
2012-01-20 08:51 1411数据/配置 的存储方式 Json篇 以JsonCpp库使用为例 ... -
Linux 常用命令
2012-01-20 08:51 635Linux 常用命令 2011年03月03日 学无止境, ... -
windows图形编程基础
2012-01-20 08:51 741windows图形编程基础 2010 ... -
双鱼男最需要找什么样的女人做老婆?
2012-01-19 13:56 2435双鱼男最需要找什么样 ... -
我所深爱的女人之9号 高中篇
2012-01-19 13:56 548我所深爱的女人之9号 ... -
十二星座怒点在哪里
2012-01-19 13:55 601十二星座怒点在哪里 2010年06月28日 平安118论 ... -
这感觉似曾相识
2012-01-19 13:55 586这感觉似曾相识 2010年10月22日 世上最凄绝的距离 ... -
夜魅-----【索爱刷机必备。刷机控】
2012-01-17 03:45 508夜魅-----【索爱刷机必备。刷机控】 2011年12月31 ... -
jiqiao
2012-01-17 03:45 504jiqiao 2012年01月05日 ... -
delphi经典技艺
2012-01-17 03:45 540delphi经典技艺 2012年01月10日 http: ... -
2012-1-13
2012-01-17 03:45 5122012-1-13 2012年01月13日 ... -
2011-12-4
2012-01-17 03:45 5272011-12-4 2011年12月04日 ... -
2011-12-5
2012-01-16 02:22 5362011-12-5 2011年12月05日 女儿写作文 ... -
美国孩子的教育(上)
2012-01-16 02:22 635美国孩子的教育(上) 2012年01月05日 对美国初等 ... -
【烟雨夭桃】有一门学问叫“无奈”
2012-01-16 02:22 454【烟雨夭桃】有一门学问叫“无奈” 2011年12月10日 ... -
儿子考完试以后
2012-01-16 02:22 473儿子考完试以后 2012年0 ... -
杂乱的文
2012-01-16 02:22 448杂乱的文 2012年01月10日 ...
相关推荐
太阳系仿真源代码,OPENGL,模型太阳系各个行星运动
#define WIN_TITLE "模拟太阳系各星球的转动" const int WIN_WIDTH = 800; const int WIN_HEIGHT = 600; BOOL isFullScreen = FALSE; // 初始不为全屏 #define DEG_TO_RAD 0.017453 float angle=0.0; static ...
类太阳系的行星运转模型,并添加有一些人机交互
绘制九大星球,添加了轨道,球体旋转,视角变换,光照,纹理,而且添加了字体和背景音频
程序实现太阳系模型,包括太阳在内所有星球纹理映射,实现所有星球公转自转的模拟,鼠标左键按住可通过移动鼠标调整视角。
使用C++与opengl实现的简易太阳系,开发环境:win7,opengl,c++
这是一个基于openGL的C++太阳系模型。其中太阳、地球 、月球均带有纹理,同时实现了光照的效果,是整个模型具有了立体效果。希望这个对大家有所帮助。
OpenGL 太阳系模型动画 可漫游、隐藏个别星系、改变星体运动速度
在vs2008环境下实现的该文章“OpenGL实现太阳系模型”的源码,编译运行成功:http://www.juwends.com/tech/opengl/opengl-solar-system.html 该文章只贴出了代码,但没有提供工程文件,里边的文件glut包含编译该程序...
使用C++以及OpenGL实现的简易太阳系模型,开发环境:vs2010+win7+OpenGL。
OpenGL的太阳系模拟系统 比较简单或粗糙,但基本把贴图,轨道等解决
vb编写的opengl程序,现在大部分介绍opengl的书籍都是C或C++的,这个程序对于想用vb编写opengl程序的来说很具有参考价值。
OpenGL 的一个小程序,用vs2010实现 显现太阳系模型
OpenGL是一个非常强大的图形引擎。关于OpenGL实现太阳系模型是因为选了三维动画的课,最后交的结课作业,为了不太浪费资源,所以写一篇文章来保留这些劳动成果
一个经典的opengl程序,太阳系模型。地球可以自转,也可以围绕太阳公转。
用VC++ opengl语言编程 建立太阳系模型
用OPENGL写的太阳系系统,3D模型,可缩放大小
基于OpenGL绘制的太阳系,包含了纹理映射和鼠标检选等算法
我用Opengl写的一个模拟太阳系的程序,窗口用的glut库。 在这个程序编写过程中用到:视图变换,模型变换,投影变换。光照。纹理贴图。 这个程序实现了:太阳系中的太阳和七大行星,地球,月球和一个彗星的仿真运动。...
利用C#语言开发的太阳系三维动态模型,可以模拟太阳系各个行星的运行轨迹,采用opengl技术