OpenGL基础图形编程 - OpenGL基本程序结构

原创 2005年05月23日 23:39:00
OpenGL基础图形编程 - OpenGL基本程序结构
作者:未知    文章来源:中国游戏开发者    点击数: 1043    更新时间:2005-4-5
用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Microsoft C等类似,但也有许多不同之处。
  本指南所有的程序都是在Windows NT的Microsoft Visual C++集成环境下编译连接的,其中有部分头文件和函数是为这个环境所用的,例如判别操作系统的头文件“glos.h”。此外,为便于各类读者同时快速入门,在短时间内掌握OpenGL编程的基本方法和技巧,指南中例子尽量采用标准ANSI C调用OpenGL函数来编写,而且所有例程都只采用OpenGL附带的辅助库中的窗口系统。此外,这样也便于程序在各平台间移植,尤其往工作站UNIX操作系统移植时,也只需改动头文件等很少很少的部分。下面列出一个简单的OpenGL程序:

  例4-1 OpenGL简单例程Simple.c

  #include <GL/gl.h>
  #include <GL/glaux.h>
  #include "glos.h"

  void main(void)
  {
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(0,0,500,500);
    auxInitWindow("simple");

    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);

     glColor3f(1.0,0.0,0.0);
    glRectf(-0.5,-0.5,0.5,0.5);

     glFlush();
    _sleep(1000);
  }

  这个程序运行结果是在屏幕窗口内画一个红色的方块。
  下面具体分析整个程序结构:首先,在程序最开始处是OpenGL头文件:<GL/gl.h>、<GL/glaux.h>。前一个是gl库的头文件,后一个是辅助库的头文件。此外,在以后的几章中还将说明OpenGL的另外两个头文件,一个是<GL/glu.h>实用库的头文件,另一个是<GL/glx.h>X窗口扩充库的头文件(这个常用在工作站上)。接下来是主函数main()的定义:一般的程序结构是先定义一个窗口:

  auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
  auxInitPosition(0,0,500,500);
  auxInitWindow("simple");

  auxInitDisplayMode(AUX_SINGLE|AUX_RGBA)设置窗口显示模式为RGBA方式,即彩色方式,并且图形缓存为单缓存(SINGLE BUFFER)。auxInitPosition(0, 0, 500, 500)定义窗口的初始位置,前两个参数(0, 0)为窗口的左上角点的屏幕坐标,后两个参数(500,500)为窗口的宽度和高度。auxInitWindow("simple")是窗口初始化,字符参数是窗口名称。
  然后是窗口内清屏:

  glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT);

  第一句将窗口清为黑色,第二句将颜色缓冲区清为glClearColor(0.0, 0.0, 0.0, 0.0)命令所设置的颜色,即同窗口背景颜色一致。
  再接着是在窗口内画一个物体:

  glColor3f(1.0,0.0,0.0);
  glRectf(-0.5,-0.5,0.5,0.5);

  很明显,第一句设置物体颜色,函数中前三个参数分别为R、G、B值,最后一个参数是Alpha值,范围都从0至1;第二句绘制一个二维矩形。注意:OpenGL是针对三维图形而言,因此用作OpenGL编程绘制物体必须意识到任何一个物体都是三维的,具有空间性,而显示于屏幕上的物体都是三维物体在二维平面上的投影。
  从表面上看,上述程序代码很简单,实际上已经用到了缺省的投影形式(正射投影)。再看glFlush()函数,表示强制绘图完成。最后一句_sleep(1000),参数单位为毫秒,整句意思是保持现有状况一秒钟,然后结束程序运行。这个函数是VC++的库函数。
  总而言之,OpenGL程序基本结构为定义窗口、清理窗口、绘制物体、结束运行。

OpenGL基础图形编程 - OpenGL基本程序结构

用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Micros...
  • Augusdi
  • Augusdi
  • 2010年05月10日 18:52
  • 1294

OpenGL基础图形编程 - OpenGL基本程序结构

用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Micros...
  • popkiler
  • popkiler
  • 2007年08月22日 09:43
  • 457

OpenGL程序的基本结构

OpenGL入门;了解第一个OpenGL程序
  • qq_23879187
  • qq_23879187
  • 2017年12月04日 22:35
  • 89

OpenGL基础图形编程(六)OpenGL辅组库的基本使用

OpenGL是一个开放的系统,它是独立于任何窗口系统或操作系统的。尽管它包含了许多图形函数,但它却没有窗口函数,也没有从键盘和鼠标读取事件的函数,所以要初学者写出一个完整的图形程序是相当困难的。另外,...
  • heyuchang666
  • heyuchang666
  • 2016年04月09日 17:24
  • 2234

OpenGL基础图形编程(一)OpenGL与3D图形世界

1.1、OpenGL使人们进入三维图形世界1.2、OpenGL提供直观的三维图形开发环境 OpenGL提供一系列的三维图形单元供开发者调用。 OpenGL提供一系列的图形变换函数。 OpenGL提供一...
  • heyuchang666
  • heyuchang666
  • 2016年04月05日 20:11
  • 1149

OpenGL基础图形编程(八)变换

OpenGL变换是本篇的重点内容,它包括计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换,以及针对OpenGL的特殊变换概念理解和用法,如相机模拟、矩阵堆栈等。学好了这章,才开...
  • heyuchang666
  • heyuchang666
  • 2016年04月11日 16:36
  • 2096

OpenGL 入门基础知识

环境      Android Studio      使用JAVA 学习 OpenGLES  参考书籍  《OpenGL es 2.0 上卷》 ...
  • talent_jian
  • talent_jian
  • 2016年10月16日 22:52
  • 509

OpenGL基础图形编程(四)基础程序结构

用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Micros...
  • heyuchang666
  • heyuchang666
  • 2016年04月06日 16:03
  • 816

OPENGL 绘制基本图元

glColor3f(1.0,0.0,0.0);//设置颜色 glBegin(GL_TRIANGLES);//开始绘制,参数可选 glEnd(); 1.绘制矩形 glRectf(-0.5...
  • lan354898254
  • lan354898254
  • 2015年04月09日 10:27
  • 644

OpenGL入门教程

...
  • cqfz123
  • cqfz123
  • 2006年10月24日 15:16
  • 22726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL基础图形编程 - OpenGL基本程序结构
举报原因:
原因补充:

(最多只允许输入30个字)