中利用实现三维绘图的
3、在VC下实现程序编译
在VC器下键入下述代码后,保存为后缀是.cpp的C++文件。开始编译,在“The build command requires an active project workspace”。“Would you like to create a default project workspace”? 的提示后,选择“是(Y)”。进入“Project”菜单,选择“Setting”项,弹出“Project Setting”对话框,选择“Link”项,在“Libaray”栏目中加入OpenGL提供的函数库:“b b b”。(注意:在执行程序时,Windows的system目录下要包含l及l两个动态连接库)。附源程序代码:
#include \"windows.h\"
#include \"gl/gl.h\"
#include \"gl/glaux.h\"
#include \"gl/glu.h\"
#include \"math.h\"
void myinit()
{
glClearColor(1,1,0,0);
GLfloat ambient[]={.5,.5,.5,0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
GLfloat mat_ambient[]={.8,.8,.8,1.0};
GLfloat mat_diffuse[]={.8,.0,.8,1.0};
GLfloat mat_specular[]={1.0,.0,1.0,1.0};
GLfloat mat_shininess[]={50.0};
GLfloat light_diffuse[]={0,0,.5,1};
GLfloat light_position[]={0,0,1.0,0};
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0,GL_POSITION, light_position);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
}
void CALLBACK display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
auxSolidSphere(1.0); // 绘制半径为1.0的实体球
glFlush(); // 强制输出图像
auxSwapBuffers(); // 交换绘图缓存
_sleep(100);
}
void CALLBACK Idledisplay()
{
// x,y满足x2+y2=0.01。这样可以使物体沿该圆轨迹运动。
static float x=-.1,y=0.0;
static BOOL mark=TRUE;
static float step=.01;
x+=step;
if(x=.1x=-.1)
{
if(step0)
身边总会有一只形影不离的宠物。而随着游戏最近全新的“宠物探险”玩法推出 y=sqrt(.01-x*x);
else
y=-sqrt(.01-x*x);
glTranslatef(x,y,0);
}
else
{
step=0-step;
}
display();
}
void CALLBACK myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w=h)
glOrtho(-3.5,3.5,-3.5*(GLfloat)w/(GLfloat)h, 3.5*(GLfloat)w/(GLfloat)h,-10,10);
else
glOrtho(-3.5*(GLfloat)w/(GLfloat)h,3.5* (GLfloat)w/(GLfloat)h,-3.5,3.5,-10,10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void main()
{
auxInitDisplayMode(AUX_DOUBLE|AUX_RGBA);
auxInitPosition(0,0,400,400);
auxInitWindow(\" circle \");
myinit();
auxReshapeFunc(myReshape);
auxIdleFunc(Idledisplay);
auxMainLoop(display);
}
查看本文来源
重庆包皮过长治疗哪家好江中小儿健胃消食片
广州卵巢炎治疗费用多少钱
- 美股短线跳水 三大股指剩余转跌
- 一个妈妈最好的投资,是“放养”夫妻俩,“富养”自己
- 可让三个真实的故事,我看到人性。做心智成熟的职场人真的很难吗
- 请远离职场潜规则,借助于利他思维,成就职场新高度
- 投资者提问:左手用跌破股票破净资产高呼回购不超过3.7元却迟迟不出手,双脚...
- 酒桌上,千万不要随便却说这2句话,尤其领导在的时候,谁却说谁倒霉
- 芝麻香油、小磨香油有啥区别?听据传油工怎么说,牢记1点优质好吃
- 未能履行股票质押协议约定职责,东方园林第一大股东何巧女遭强制平仓,将被动减持
- 全新外观设计/配雷神混动 吉利全新车型FX11即将推出 今年内上市
- 巴中新增一复阳病例,这个时间段到过下八庙镇问及时报备
- 一个中年职场人的醒悟:赚花钱值吗?人生的高度来自健康的体力
- 《Apex英雄》业已修复Xbox用户手柄延迟问题