|
最近开始学OpenGL,照着教材上敲了一个刚刚涉及三维入门的小程序(太阳、地球和月亮三颗星星环绕),在调试时遇到了问题,希望各位大牛帮忙看看~~~ [em6]
程序代码如下:
/*
太阳、地球和月亮系统
*/
#include <GL/glut.h>
#pragma comment(lib,"opengl32.lib")
static int day = 360;
void myDisplay(void)
{
//深度测试
glEnable(GL_DEPTH_TEST); //以GL_DEPTH_TEST为参数调用glEnable函数,启动深度测试
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清空深度缓冲
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(75,1,1,400000000); //设置可视空间:角度,高宽度比,最近可视距离,最远可视距离
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,-200000000,200000000,0,0,0,0,0,1);
//绘制红色的“太阳”
glColor3f(1.0,0.0f,0.0f);
glutSolidSphere(69600000,20,20); //绘制球体函数:球体半径,“面”的数目
//绘制蓝色的“地球”
glColor3f(0.0f,0.0f,1.0f);
glRotatef(day/360.0*360.0,0.0f,0.0f,-1.0f); //地球转过角度,,,自西向东
glTranslatef(150000000,0.0f,0.0f); //地球轨道半径
glutSolidSphere(15945000,20,20);
//绘制**的“月亮”
glColor3f(1.0f,1.0f,0.0f);
glRotatef(day/30.0*360.0-day/360.0,0.0f,0.0f,-1.0f);
glTranslatef(38000000,0.0f,0.0f);
glutSolidSphere(4345000,20,20);
glFlush();
glutSwapBuffers(); //使用双缓冲
}
//新的函数,在空闲时调用,作用是把日期往后移动一天并重新绘制,达到动画效果
void myIdle(void)
{
++day;
if(day>=360)
day = 0;
myDisplay();
}
int main(int argc,char *argv[])
{
glutInit(&argc,argv); //对GLUT进行初始化
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE); //设置显示方式(使用RGB颜色和双缓冲)
glutInitWindowPosition(100,100); //设置窗口位置
glutInitWindowSize(800,800); //设置窗口尺寸
glutCreateWindow("第8个OpenGL程序 - 太阳,地球和月亮"); //根据前面设置的信息创建窗口,参数将被作为窗口的标题
glutDisplayFunc(&myDisplay); //进行画图时,调用函数
glutIdleFunc(&myIdle); //添加这一句
glutMainLoop(); //消息循环(显示窗口,等待窗口关闭后返回)
return 0;
}
出现的问题如下:
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/OpenGL8.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
望解释下下面这个是什么情况~~~ [em5] |
|