CHEETAH.W

静心积累

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

百度百科传送门:OpenGLGLUT.

编程爱好者网站原创教程:OpenGL入门学习.

OpenGL如何获取?http://www.opengl.org/,但它随VC++6.0已经安装到计算机中了。

OpenGL在计算机上的位置?
如果是VC++6.0。请打开C:\Program Files\Microsoft Visual Studio\VC98\Lib,检查该目录下是否有OPENGL32.LIB和GLU32.LIB,就是它们了。

调用的时候对应include哪些文件呢?
请打开C:\Program Files\Microsoft Visual Studio\VC98\Include\GL,发现里面的三个文件了吧,就是这些(ps:并非直接在Include下面所以include时候注意戴上gl\)。

下面来安装GLUT。与其说是安装,不如说是拷贝几个文件(ps:目的就是要让VC编译器发现glut的lib,h文件,然运行环境找到对应动态链接库dll文件):

我下载了一份glut是3.7beta版的。文件名glutdlls37beta.zip。可以直接在我的博客中下载:https://files.cnblogs.com/cheetahw/glutdlls37beta.zip

解压打开以后5个文件:
glut.h 拷入 C:\Program Files\Microsoft Visual Studio\VC98\Include\GL
glut.lib 和 glut32.lib 拷入 C:\Program Files\Microsoft Visual Studio\VC98\Lib
glut.dll 和 glut32.dll 拷入 C:\WINDOWS\system32
(ps:以上文件拷入位置其实并不固定,目的就是使vc编译器能找到它们,比如也可以定义vc编译器目录include到其它位置。我们这里就不这么做了。win7 64位操作系统中就有很大不同,比如它的include文件夹和lib文件夹就在Program Files(x86)\Microsoft SDKs\Windows\v7.0A这样的目录下,而开发的64位软件,dll应该放在windows/sysWow64,但在win7上开发32位程序,dll仍然在windows\system32下面)

*如果vc基础不是很好,只是为了完成一下作业的话。做好上面的浅绿色部分即可。

建立win32控制台应用程序,项目名glwithGLUT,空项目。
项目下新建core.cpp文件。准备编码。

(如果不是很了解下面的编码,建议先下载一份文档对照着看下面的源码。这是一份云南大学信息学院编制的GLUT文档,中文,看上去较简单,直接放博客上的下载地址:https://files.cnblogs.com/cheetahw/glut%E5%87%BD%E6%95%B0%E8%AF%A6%E8%A7%A3.pdf)核心库文档英文的,暂时没有发上来,可以自己去搜索一下。或者去图书馆借本参考书!

View Code
#include <gl/glut.h>
#include <math.h>

const float PI = 3.1416;
float ax = 0.0f;
float ay = 0.0f;
float az = 0.0f;

void Drawing(){
glPushMatrix();
glRotatef(ax, 1.0f, 0.0f, 0.0f);
glRotatef(ay, 0.0f, 1.0f, 0.0f);
glRotatef(az, 0.0f, 0.0f, 1.0f);
glBegin( GL_LINES );{
for(float t=.0f; t<=PI; t+=.1f){
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(cosf(t)*100.0f,sinf(t)*100.0f,0.0f);
glVertex3f(0,0,0);

glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0f,cosf(t)*100.0f,sinf(t)*100.0f);
glVertex3f(0,0,0);

glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(sinf(t)*100.0f,0.0f,cosf(t)*100.0f);
glVertex3f(0,0,0);
}
}glEnd();
glPopMatrix();
}

void OnReshape(int w, int h){
double ar = (double)w/(double)h;
glViewport(0, 0, w, h);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();

if(w>=h){
glOrtho(-300*ar, 300*ar, -300, 300, -300, 300);
}else{
glOrtho(-300, 300, -300/ar, 300/ar, -300, 300);
}

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}

void OnDisplay(){
glClear( GL_COLOR_BUFFER_BIT );
Drawing();
glutSwapBuffers();
}

void OnTimer(int flag){
ax += 0.12f;
ay += 0.15f;
az += 0.1f;
OnDisplay();
glutTimerFunc(10, OnTimer, 101);
}

int main(int argc, char* argv[]){
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
glutInitWindowPosition(0,0);
glutInitWindowSize(800,600);
glutCreateWindow("窗口标题");
glutDisplayFunc(OnDisplay);
glutReshapeFunc(OnReshape);
glutTimerFunc(10, OnTimer, 101);
glutMainLoop();
return 0;
}

core.cpp中粘贴了如上的代码,并且编译运行。如果在屏幕上看见了一些变换的图形的话。那么OpenGL的环境配置就OK了。下面,你可以更改一下代码中的参数,看看是不是达到了你想要的效果。

posted on 2011-11-15 21:44  Ethan.Wong  阅读(1283)  评论(0编辑  收藏  举报