OpenGL(一)——入门学习
概要
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(一)——入门学习的更多相关文章
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
- OpenGL入门学习(转)
OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...
- OpenGL入门学习(转载)
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- SCARA——OpenGL入门学习五六(三维变换、动画)
OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...
- SCARA——OpenGL入门学习四(颜色)
OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...
- SCARA——OpenGL入门学习三
OpenGL入门学习[三] 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用 ...
- SCARA——OpenGL入门学习一、二
参考博客:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 简介 最近开始一个机械手臂的安装调试,平面关节型机器人又称SCA ...
- OpenGL入门学习(三)
http://developer.178.com/201103/94954704639.html 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点 ...
- OpenGL ES入门09-GLSL实现常见特效 [转]
本文转自简书,原文地址http://www.jianshu.com/p/e4a8c83cd37 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获. 这篇文章的目 ...
- vue入门学习(基础篇)
vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...
随机推荐
- 解决关于ArcGIS10.2服务手动启动的问题
解决关于ArcGIS10.2服务手动启动的问题 C:\program files\arcgis\license10.2\bin> lmgrd -z -c service.txt新建一文本,将上面 ...
- div层叠顺序额
在模态窗体中打开新div,结果该div不显示 该div不是没有显示,而是显示了,但是被这个模态状体挡住了 解决方法:修改z-index这个参数 该参数越大则显示在越上层,即可见
- matlab squeeze函数的用法
matlab中squeeze函数用于删除矩阵中的单一维(Remove singleton dimensions),比如执行下面的代码,随机产生一个1x2x3的矩阵A,然后squeeze(A)将返回一个 ...
- spring集成freemaker 制作短信模板
1.配置configure的Bean,Bean中指定了模板文件的路径和刷新时间等配置. <!-- 配置freeMarkerConfigurer进行属性值的注入 --> <bean i ...
- lnmp重置mysql密码
第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_mys ...
- php.ini 不生效问题extension
date.timezone = PRC extension_dir = "ext"
- [转载] Android.Hook框架xposed开发篇
本文转载自: http://www.52pojie.cn/thread-396793-1-1.html 原帖:http://drops.wooyun.org/tips/7488 作者:瘦蛟舞 官方教程 ...
- sourceTree忽略跟踪文件
1.未跟踪文件,直接在.gitignore文件打上文件名字,如果要忽略整个文件夹,要在文字后面加上一个/ .如:gradle/ . 2.已跟踪文件,先删除那些文件,再提交到git上,即删除远程的文件, ...
- java内存分析
链接:http://blog.csdn.net/chana1101/article/details/5632393
- jQuery实现无缝滚动条
很多时候只看别人的代码时很难看懂.有很多原因,有时候可能是没有耐心,这时候看一下实现的原理就很快明白代码的内容,所以要加些注释,让自己让别人都能看明白:有的时候就是因为知识有限就是不懂,哪怕代码很简单 ...