OpenGL入门(一)

来源:互联网 发布:怎么找文献的数据 编辑:程序博客网 时间:2024/05/01 07:52

初识OpenGL,个人觉得它其实就是一个图形处理方面的SDK。

在学习一个新的SDK时,首先就是要为其准备编译环境。

个人准备在windows进行opengl小程序的编译,做一些小的demo,但又不是很想依赖VS等编译环境,所以想自己编写makefile进行opengl demo的编译工作。

首先需要准备nmake.exe  cl.exe  link.exe等基本的编译链接工具。

其次就是下载编译所需的sdk(包括平台的sdk,opengl的sdk),为了方便可以下载一些第三方的库。

然后就是先写一个简单程序,调用opengl 的API。

最后就是编写makefile文件,我们先命名为demo.mak。

但这里本人还没有学透makefile编写技巧,真在摸索中,等完成研究后再和大家分享。

如果有高人的话,可以帮忙指点一二,非常感谢。


搭建编译环境

下载Windows SDK,本人使用vs自带的VC SDK,存储目录如下:

E:\development\Vc7

修改环境变量,或直接编写 一个批处理文件mypath.bat

输入内容如下:

@echo off

set PATH=$(PATH);E:\development\Vc7\bin
set LIB=E:\development\Vc7\lib;E:\development\Vc7\PlatformSDK\Lib
set INCLUDE=E:\development\Vc7\PlatformSDK\Include;E:\development\Vc7\include

在编译前执行mypath.bat


下载OpenGL的sdk

配置OpenGL:

1.将开发库中的.h文件拷贝到E:\development\Vc7\include\GL目录中
2.将.lib文件拷贝到E:\development\Vc7\lib目录中
3.将.dll文件拷贝到操作系统的system32目录中

创建一个简单的OpenGL程序main.cpp

#include <GL/glut.h>

void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    glFlush();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(400, 400);
    glutCreateWindow("第一个OpenGL程序");
    glutDisplayFunc(&myDisplay);
    glutMainLoop();
    return 0;
}


编写Makefile

LINK32 = link.exe

LINK32_OBJS = \
main.obj

Test.exe : $(LINK32_OBJS)
$(LINK32) /OUT:Test.exe $(LINK32_OBJS) 
  

$(LINK32_OBJS) : main.cpp

#仅编译文件
cl.exe /c main.cpp 

clean:
@del *.obj  *.exe
@echo Project has clean.


将main.cpp和Makefile放到同一工程目录下

执行nmake

这时会提示link错误

修改main.cpp

在#include之前添加#define GLUT_DISABLE_ATEXIT_HACK

再次编译,第一个opengl程序就诞生了

执行Test.exe