【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈。

我的主题是,好记性不如烂笔头。

================================================================

1. 下载glut库

glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

glut全称为:OpenGL Utility Toolkit,也就是OpenGL应用工具包,它建立在OpenGL基础之上,方便开发OpenGL的某些功能,比如我们后面要创建的Windows程序,就可以用glut来方便地构建起一个初始化的Windows程序。

2. 安装glut库

为了能使用glut库,我们解压开这个zip包,会发现其中包含如下几个文件,我们需要复制一下以下几个文件:

glut.h:头文件,复制到D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\gl目录下(需要自己来新建gl目录)

glut.lib,glut32.lib:静态链接库,复制到D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib目录下

glut.dll,glut32.dll:动态链接库,复制到C:\Windows\System32目录下,64位操作系统的,还需要复制到C:\Windows\SysWOW64目录下。

3.创建工程

创建一个win32应用控制台工程。

4.HelloWorld示例

#include <GL/glut.h>

void display(void)
{

  glClear (GL_COLOR_BUFFER_BIT);  //清除颜色缓冲区

  glColor3f (1.0, 1.0, 1.0);      //设置绘制的颜色为白色(红,绿,蓝,)

  glBegin(GL_POLYGON);            //标志着一个顶点数据列表的开始,GL_POLYGON表示绘制简单的凸多边形
  glVertex3f (0.25, 0.25, 0.0);
  glVertex3f (0.75, 0.25, 0.0);
  glVertex3f (0.75, 0.75, 0.0);
  glVertex3f (0.25, 0.75, 0.0);
  glEnd();                        //标志着一个顶点数据列表的结束

  glFlush ();
}

void init (void)
{

  glClearColor (0.0, 0.0, 0.0, 0.0);     //设置窗口将被清除成黑色
  glMatrixMode(GL_PROJECTION);           //将当前矩阵指定为投影矩阵
  glLoadIdentity();                      //把当前矩阵设为单位矩阵
  glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);//指定绘制图像时使用的坐标系统 glOrtho(Xmin,Xmax,Ymin,Ymax,Zmin,Zmax);
}

int main(int argc, char** argv)
{
  //初始化gult
  glutInit(&argc, argv);

  //指定使用RGBA模式还是颜色索引模式,单缓冲还是双缓冲。
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);   

  //指定窗口大小(像素为单位)
  glutInitWindowSize (250, 250); 

  //左上角位置
  glutInitWindowPosition (100, 100);

  //创建窗口,glutMainLoop()之后才会显示
  glutCreateWindow ("hello");

  //初始化一次
  init ();

  //显示回调函数,当glut确定窗口需要重绘时,回调函数会执行。
  //因此场景重绘代码应该放在这里
  glutDisplayFunc(display); 

  //启动程序,
  glutMainLoop();
  return 0;
}

5.效果图

【opengl 学习笔记01】HelloWorld示例,布布扣,bubuko.com

时间: 2024-10-17 06:40:16

【opengl 学习笔记01】HelloWorld示例的相关文章

【OpenGL 学习笔记01】HelloWorld演示样例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比較踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

OpenGL 学习笔记 01

OpenGL太可怕了...必需得把学的记下来,不然绝壁忘. 首先贴出代码,然后分析创建一个OpenGL程序都需要什么 1 #include <cstdio> 2 #include <cstdlib> 3 4 #include <GL/glew.h> 5 6 #include <GLFW/glfw3.h> 7 8 #include <glm/glm.hpp> 9 #include <glm/gtc/matrix_transform.hpp&g

【OpenGL 学习笔记02】宽点画线

我们要知道,有三种绘图操作是最基本的:清除窗口,绘制几何图形,绘制光栅化对象. 光栅化对象后面再解释. 1.清除窗口 比如我们可以同时清除颜色缓冲区和深度缓冲区 glClearColor (0.0, 0.0, 0.0, 0.0);//指定颜色缓冲区清除为黑色 glClearDepth(1.0);//指定深度缓冲区的清除值为1.0 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//指定要清除的缓冲区并清除 2.绘制几何图形 先要设置绘制颜色,

OpenGL学习笔记:拾取与选择

转自:OpenGL学习笔记:拾取与选择 在开发OpenGL程序时,一个重要的问题就是互动,假设一个场景里面有很多元素,当用鼠标点击不同元素时,期待作出不同的反应,那么在OpenGL里面,是怎么知道我当前鼠标的位置是哪一个物体呢? OpenGL有一套机制,叫做Picking, 里面涉及到几个核心概念: 1. selection mode. 选择模式 2. name stack. 名字栈 3. hit record. 命中记录 4. viewing volume. 视角范围 在OpenGL的pick

【OpenGL 学习笔记04】顶点数组

通过之前的学习,我们知道,如果要绘制一个几何图形,那就要不断的调用绘制函数,比如绘制一个20条边的多边形,起码要调用22条函数(包含glBegin和glEnd). 所以OpenGL提供了一系列的顶点数组函数减少函数调用的次数来提高性能.而且使用顶点还可以避免顶点共享的冗余处理. 1.简单示例 先来回顾一下之前我们是怎么画直线的: void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2) { glBegin(GL_LINES); g

【OpenGL 学习笔记03】点画多边形

1.点画多边形 //定义填充多边形的点画模式.mask为32 x 32 的位图指针,1画0不画,使用前必须启用多边形点画功能 void glPloygonStipple(const GLubyte* mask); //绘制一个矩形 void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2); 2.示例 #include <GL/glut.h> #include <stdlib.h> void display(void) { G

DirectX10学习笔记&lt;01&gt; 搭建环境-在Visual Studio中配置DirectX

一.工具下载 IDE:Visual Studio 2008 SDK:DirectX SDK,可以从Microsoft的网站上免费下载到.SDK中还包含示例.工具和文档.自带的工具很有用,我们会经常使用其中的DDS纹理工具. 二.设置Visual Studio 2008 菜单栏->Tools->Options... 左边选择Projects and Solutions->VC++ Directories 右边Show directiories for:选择Include files,往下列

HTTP 学习笔记01

HTTP   hypertext transfer protocol (超文本传输协议) TCP/IP 协议集中的一个应用层协议 用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 HTTP 1.0  会话方式 HTTP 1.1 方式 HTTP 请求消息结构 一个请求行,若干消息头,以及实体内容 其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. GET   方式下是没有实体内容的 POST .PUT.DELETE 方式下请求消息才可以包含实体内容 HT

SWIFT学习笔记01

1.Swift,用来判断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = "if=====" }else{ greeting = "else===" } 2.运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. 3.//使用..创建的范围不包含上界,如果想包含的话需要使用...,集合上,就是[)与[]的关系 for i