学OpenGL第一章笔记

通过对OPENGL第一章的学习
我学到了以下内容:
1.让我对OPENGL有了一个初步的印象
2.让我对所使用的API已经有了一个概略的了解
3.让我了解飞速发展并且令人振奋的三维游戏
4.让我知道OPENGL是一个在许多游戏中使用到的图形库
5.让我了解OPENGL面世已经超过10年,它的开发受Architectural Review Board的监管
6.GLUT和SDL库与OPENGL结合起来使用以便进行更快速的开发以及增加功能性


运行 OpenGL 的软件及硬件配置如下所述:
1.操作系统:Windows 95(OEM Service Release 2)或 Window NT 4.0 版本。 
2. 软件开发环境:Microsoft Visual C++4.0 及以上版本。 
3. 硬件:奔腾级微机,最好配有支持OpenGL 硬加速的显示卡。 
4. 相关文件:  windows.h 是在微软 Windows 95 或 Windows NT 环境下使用的窗口头文件,
  gl.h 是 OpenGL 核心函数的头文件
  glu.h 是应用程序库
  glaux.h 是辅助库函数的头文件,对于所有的 OpenGL应用程序,前 3 个头文件是必需的。
  在创建执行文件时,要另外连接 opengl32.lib、glu32.lib 和 glaux.lib 等3 个函数库。
  运行执行文件时,在 Windows95\system目录下要有 opengl32.dll 和glu32.dll 两个动态链接库。


问题:
1.OPENGL最早是什么时候面世的?
答案:1992年7月 

2.OPENGL的当前版本是什么?
答案:1.5


3.是谁决定了OPENGL的添加和改变?
答案:

 

一个简单例字:

 

#include <windows.h>
#include <math.h>
#include <gl/gl.h>
#include<gl/glu.h>
#include<gl/glaux.h>

void init();
void CALLBACK reshape(GLsizei w,GLsizei h);
void CALLBACK display();
GLfloat s,h;

void CALLBACK display()
{
  //清空窗口,设置背景色为白色
  glClearColor(1,1,1,1);
  glClear(GL_COLOR_BUFFER_BIT);
  //取景变换
  glLoadIdentity();
  gluLookAt(5,5,h,s,0,0,0,1,0);
  //glRotatef(30,1,1,0);
  //设置前景色为黑色
  glColor3f(1,1,0);
  //绘图开始,两条水平平行线
     GLfloat RAD=(GLfloat)3.1415926/180;
  GLfloat x,y,z,r;
  int i,j;
  for(i=0;i<180;i+=5)
  {
      glBegin(GL_LINE_LOOP);
      r=2*(GLfloat)sin(i*RAD);
      z=2*(GLfloat)cos(i*RAD);
      for(j=0;j<360;j+=10)
   {
      x=r*(GLfloat)cos(j*RAD);
      y=r*(GLfloat)sin(j*RAD);
      glVertex3f(x,y,z);
   }
   glEnd();
 }
 for(j=0;j<360;j+=10)
 {
   glBegin(GL_LINE_LOOP);
   for(i=0;i<=180;i+=10)
   {
    r=2*(GLfloat)sin(i*RAD);
    z=2*(GLfloat)cos(i*RAD);
    x=r*(GLfloat)cos(j*RAD);
    y=r*(GLfloat)sin(j*RAD);
    glVertex3f(x,y,z);
   }
  glEnd();
 
 }
 //清空帧缓存
 glFlush();
}

void init()
{
 glShadeModel(GL_FLAT);
 s=0; 
 h=5;
}
 
//回调函数,窗口初始化和大小改变时,调用此函数
void CALLBACK reshape(GLsizei w,GLsizei h)
{
  //设置当前矩阵为投影变换矩阵
  glMatrixMode(GL_PROJECTION);
  //设置投影变换
  glLoadIdentity();
  gluPerspective(30,1,-3,3);
  //设置当前矩阵为模式变换矩阵
  glMatrixMode(GL_MODELVIEW);
  //设置视区变换
  glViewport(0,0,w,h);
}
 
void CALLBACK Left()
{
 s+=(GLfloat)0.1;
}
void CALLBACK Right()
{
 s-=(GLfloat)0.1;
}
void CALLBACK Up()
{
 h-=(GLfloat)0.1;
}
void CALLBACK Down()
{
 h+=(GLfloat)0.1;
}

//主函数
void main()
{
 //设置 OpenGL 的显示模式:单缓存、RGB 模式
 auxInitDisplayMode(AUX_SINGLE|AUX_RGB);
 //设置窗口位置、大小和标题
 
 auxInitPosition(110,100,300,300);
 auxInitWindow("OpenGL Demo1");

 init();
 //设置回调函数
 auxKeyFunc(AUX_LEFT, Left);
 auxKeyFunc(AUX_RIGHT, Right);
 auxKeyFunc(AUX_UP, Up);
 auxKeyFunc(AUX_DOWN, Down);
 auxReshapeFunc(reshape);
 auxMainLoop(display);
}

/*程序分析
主程序中设置 OpenGL 窗口的显示模式,打开窗口的左下角坐标为(0,0) ,右上角坐
标为(300,300) ;auxInitWindow 函数给出窗口的标题;init 函数设定 OpenGL 的明暗处理
方式;auxShapeFunc 函数在窗口移动、变形后,调用myReshape 函数重新计算模型、取景
变换及投影变换;auxMainLoop 循环调用 displny 函数,设定颜色、投影交换、描述几何要
素;auxKeyFunc(AUX_LEFT,Left)设定响应方向键左键的回调函数;auxKeyFunc
(AUX_RIGHT,Right)设定响应方向键右键的回调函数;auxKeyFunc(AUX_UP,Up)设定响应
方向键向上键的回调函数;auxKeyFunc(AUX_DOWN,Down)设定响应方向键向下键的回调
函数。
Display 函数首先设置 OpenGL 窗口的背景及绘图颜色,然后对物体、场景进行旋转、第1章  OpenGL初步                                                                    - 7 -
缩放、平移操作。glBegin 与glEnd 之间的语句用于给定顶点绘制圆球的经线和纬线,其中
x、y、z 为顶点坐标,由 glVertex 函数定义所描述几何要素的顶点。
*/


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值