概要

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. PL/SQL连接64位Oracle配置方法

    问题原因: plsql developer无法连接64位oracle server的原因是,plsql是32位的,没有64位的版本,而oracle是64位,两者不兼容. 配置方法: 1.下载64位Or ...

  2. linux+php+apache+mysql(mariadb)故障排除

    wordpress 网页文件打不开(client denied by server).白屏(http 500)问题排除顺序 1.查看apache错误日志查照问题报告找到问题 “client denie ...

  3. rediscluster 集群操作(摘抄)

    一:关于redis cluster 1:redis cluster的现状 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Ho ...

  4. ecshop的特点,持续加新

    一.目录文件结构 入口文件index.php,define('IN_ECS', true); 只有为true时才可以进入. 首先加入init.php,在这个文件里: @ini_set('memory_ ...

  5. sql子查询 嵌套SELECT语句

    嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在sele ...

  6. BSF、BSR: 位扫描指令

    ;BSF(Bit Scan Forward): 位扫描找1, 低 -> 高 ;BSR(Bit Scan Reverse): 位扫描找1, 高 -> 低   找到是 1 的位后, 把位置数给 ...

  7. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  8. jquery 根据年 月设置报表表头

    function setTblHeadr(thisTime){ $("#datatable_ajax1 thead").empty(); //获取星期 var weekday=ne ...

  9. 介绍开源的.net通信框架NetworkComms框架 源码分析(十五 ) CommsThreadPool自定义线程池

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  10. 使用ssh-keygen设置ssh无密码登录

    http://lhflinux.blog.51cto.com/1961662/526122 ssh-keygen -t rsa 输入后,会提示创建.ssh/id_rsa.id_rsa.pub的文件,其 ...