概要

1. 为什么使用OpenGL

2. 在VS2008上搭建环境

3. 一个简单的例程

OpenGL相较于DirectX的优越性

1. 与C语言紧密结合

OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的

2. 强大的可移植性

OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关

3. 高性能的图形渲染

OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先

在VS2008上搭建环境

1. 我的环境是vs2008+win7

2. 下载安装GLUT

GLUT是OpenGL实用工具包,一个窗口系统独立编写OpenGL程序的工具包。它实现了一个简单的窗口应用程序编程接口(API)为OpenGL。GLUT使得它相当容易了解和探索OpenGL编程。GLUT提供了一个可移植的API,所以你可以写一个单一的OpenGL程序,它在所有的PC和工作站操作系统平台都可以运行

GLUT是专为小到中等规模的OpenGL程序建设。虽然GLUT非常适合学习OpenGL和简单的OpenGL应用程序开发,GLUT不是一个全功能的大型应用程序,需要复杂的用户界面的工具包,所以最好使用本地窗口系统的工具包。GLUT简单,操作方便,和小

GLUT库的C,C + +(同为C),FORTRAN,Ada编程绑定。过剩的源代码分布移植到几乎所有的OpenGL实现和平台
    GLUT不是开源的,但有很多新的和开放源码的替代品
    下载地址

GLUT包含五个文件

3. 解压文件

将glut.h解压到X:\Program Files\Microsoft Visual Studio 9.0\VC\include文件夹(实际应用中新建一个GL文件应该更好吧)

将glut.lib和glut32.lib解压到静态函数库所在文件夹X:\Program Files\Microsoft Visual Studio 9.0\VC\lib

把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内(典型的位置为:C:\Windows\System32)

如果是64位系统,将system32文件夹改为SysWOW64文件夹

一个简单的程序

#include <glut.h>
#include <math.h> GLfloat r(double angle)
{
return - cos(angle); //心形线r=1-cosθ
} void myDisplay(void)
{
double t, p = 3.141593 / ; int i; glClear(GL_COLOR_BUFFER_BIT); //清除图像缓冲器 glColor3f(1.0, 1.0, 1.0); //设置画线颜色,对应RGB glBegin(GL_POINTS);
for( i = ; i < ; i += ) //画出每一个点
{
t = i * p;
glVertex2f(r(t) * cos(t), r(t) * sin(t));
}
glEnd(); glFlush(); //促使所有之前的命令被执行
} void main(int argc, char* *argv)
{
glutInit(&argc, argv); //初始化,必须先调用 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(, ); glutInitWindowPosition(, ); glutCreateWindow("第一个OpenGL程序"); //窗体的名字 glClearColor(0.0, 0.0, 0.0, 0.0); gluOrtho2D(-4.0, 4.0, -3.0, 3.0); //截取矩阵大小为8 * 6 glutDisplayFunc(&myDisplay); glutMainLoop();
}

运行结果如下:

OpenGL(一)——入门学习的更多相关文章

  1. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  2. OpenGL入门学习(转)

    OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...

  3. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  4. SCARA——OpenGL入门学习五六(三维变换、动画)

    OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...

  5. SCARA——OpenGL入门学习四(颜色)

    OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...

  6. SCARA——OpenGL入门学习三

    OpenGL入门学习[三] 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用 ...

  7. SCARA——OpenGL入门学习一、二

    参考博客:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 简介 最近开始一个机械手臂的安装调试,平面关节型机器人又称SCA ...

  8. OpenGL入门学习(三)

    http://developer.178.com/201103/94954704639.html 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点 ...

  9. OpenGL ES入门09-GLSL实现常见特效 [转]

    本文转自简书,原文地址http://www.jianshu.com/p/e4a8c83cd37 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获. 这篇文章的目 ...

  10. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

随机推荐

  1. 解决关于ArcGIS10.2服务手动启动的问题

    解决关于ArcGIS10.2服务手动启动的问题 C:\program files\arcgis\license10.2\bin> lmgrd -z -c service.txt新建一文本,将上面 ...

  2. div层叠顺序额

    在模态窗体中打开新div,结果该div不显示 该div不是没有显示,而是显示了,但是被这个模态状体挡住了 解决方法:修改z-index这个参数 该参数越大则显示在越上层,即可见

  3. matlab squeeze函数的用法

    matlab中squeeze函数用于删除矩阵中的单一维(Remove singleton dimensions),比如执行下面的代码,随机产生一个1x2x3的矩阵A,然后squeeze(A)将返回一个 ...

  4. spring集成freemaker 制作短信模板

    1.配置configure的Bean,Bean中指定了模板文件的路径和刷新时间等配置. <!-- 配置freeMarkerConfigurer进行属性值的注入 --> <bean i ...

  5. lnmp重置mysql密码

    第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_mys ...

  6. php.ini 不生效问题extension

    date.timezone = PRC extension_dir = "ext"

  7. [转载] Android.Hook框架xposed开发篇

    本文转载自: http://www.52pojie.cn/thread-396793-1-1.html 原帖:http://drops.wooyun.org/tips/7488 作者:瘦蛟舞 官方教程 ...

  8. sourceTree忽略跟踪文件

    1.未跟踪文件,直接在.gitignore文件打上文件名字,如果要忽略整个文件夹,要在文字后面加上一个/ .如:gradle/ . 2.已跟踪文件,先删除那些文件,再提交到git上,即删除远程的文件, ...

  9. java内存分析

    链接:http://blog.csdn.net/chana1101/article/details/5632393

  10. jQuery实现无缝滚动条

    很多时候只看别人的代码时很难看懂.有很多原因,有时候可能是没有耐心,这时候看一下实现的原理就很快明白代码的内容,所以要加些注释,让自己让别人都能看明白:有的时候就是因为知识有限就是不懂,哪怕代码很简单 ...