OpenGL笔记(一)

真是各种入门。。作为一只INTP的悲哀。。

参考书:openGL编程指南

1.OpenGL是。。

图形硬件的软件接口。许多的函数,用于指定物体和操作,创建交互式的三维应用程序。

程序员需要根据一些为数不多的集合图元创建所需的模型。。

OpenGL 工具库(GLU)提供了建模功能:二次曲面,NURBS曲线和表面。。

【百度结果:NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。NURBS是非均匀有理B样条曲线(Non-Uniform Rational B-Splines)的缩写,NURBS由Versprille在其博士学位论文中提出,1991年,国际标准化组织(ISO)颁布的工业产品数据交换标准STEP中,把NURBS作为定义工业产品几何形状的唯一数学方法。1992年,国际标准化组织又将NURBS纳入到规定独立于设备的交互图形编程接口的国际标准PHIGS(程序员层次交互图形系统)中,作为PHIGS Plus的扩充部分。目前,Bezier、有理Bezier、均匀B样条和非均匀B样条都被统一到NURBS中。NURBS曲线和NURBS曲面在传统的制图领域是不存在的,是为使用计算机进行3D建模而专门建立的。在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。】

2.安装

(1)为了使用OpenGL,必须采用三个库及相关文件。(转载自http://www.cnblogs.com/helloj2ee/archive/2013/03/05/2944800.html

OpenGL核心库——它提供OpenGL的基本函数。每个函数都以GL开头;

OpenGL实用库(GL Utility Library),glu库——提供简单形状的实用函数等。每个函数都以glu开头。

OpenGl实用工具包库(Utility Toolkit),glut库——它主要用来打开窗口、开发和管理菜单,以及管理事件等,函数前缀使用glut

(2)windows的库,通常由3个文件组成,一个头文件(.h),一个库文件(.lib)和一个动态链接库文件(.dll)。

①安装了VS2010,也就安装了下面俩库:OpenGL头文件(.h)和lib文件。

OpenGL核心库:gl.h是OpenGL核心库的头文件,对应的导入库和动态库为opengl32.lib和opengl32.dll(默认在C:\Windows\System32)。

OpenGL实用库:glu.h是OpenGL功能函数库的头文件,对应glu32.lib和glu32.dll(默认在C:\Windows\System32),它同样是OpenGL库的一部分。

OpenGl实用工具包库:glut库。

可以在www.opengl.org网站上获得,

链接,http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip。

解压复制到各个文件夹下就好。

压缩包里包含5个文件:glut.h glut.lib glut32.lib glut.dll glut32.dll

glut.h放到(C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl\)这个文件夹中.

glut.lib和glut32.lib放到静态函数库所在文件夹中。(安装目录\Microsoft Visual Studio 10.0\VC\lib\)

glut.dll和glut32.dll放到操作系统所在目录下面的system32文件夹内. (C:\Windows\system32),如果是64位操作系统,则需要放到syswow64目录下。

3.创建一个工程     

1)创建一个Win32 Console Application

2)链接OpenGL libraries。项目->属性->连接器->附加依赖库->添加"opengl32.lib;glut32.lib;glu32.lib"

        代码拷贝到工程中去,编译运行。

// test_opengl.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<gl/glut.h> 
//#include<gl/glu.h>  //glut.h自动包含了glu.h 和 gl.h //#include<gl/gl.h> void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glutSwapBuffers(); } int _tmain(int argc, _TCHAR* argv[]) { glutInit(&argc, (char**) argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(320,320); glutCreateWindow("Hello OpenGL"); glutDisplayFunc(renderScene); glutMainLoop();//enters the GLUT event processing loop. return 0; }

 

运行结果:

 

 

 

posted @ 2013-08-15 17:28  PUHAHA  阅读(488)  评论(0编辑  收藏  举报