OpenGL入门【1 高速入门】

// OpenGL.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include<iostream>

#include <GL/glut.h>
#include <GL/glaux.h> 

using namespace std;
void background(void)
{
   glClearColor(0.0,0.0,0.0,0.0);//设置背景颜色为黑色
}
void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);//buffer设置为颜色可写
    glBegin(GL_TRIANGLES);//開始画三角形
    glShadeModel(GL_SMOOTH);//设置为光滑明暗模式
    glColor3f(1.0,0.0,0.0);//设置第一个顶点为红色
    glVertex2f(-1.0,-1.0);//设置第一个顶点的坐标为(-1.0,-1.0)
	glColor3f(0.0,1.0,0.0);//设置第二个顶点为绿色
	glVertex2f(0.0,-1.0);//设置第二个顶点的坐标为(0.0,-1.0)
	glColor3f(0.0,0.0,1.0);//设置第三个顶点为蓝色
	glVertex2f(-0.5,1.0);//设置第三个顶点的坐标为(-0.5,1.0)
	glEnd();//三角形结束
	glFlush();//强制OpenGL函数在有限时间内执行
}

void myReshape(GLsizei w,GLsizei h)
{
	glViewport(0,0,w,h);//设置视口
	glMatrixMode(GL_PROJECTION);//指明当前矩阵为GL_PROJECTION
	glLoadIdentity();//将当前矩阵置换为单位阵
	if(w <= h)
	gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);//定义二维正视投影矩阵
	else
	gluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);//大概是定义三个顶点的坐标
	glMatrixMode(GL_MODELVIEW);//指明当前矩阵为GL_MODELVIEW

}

int main(int argc,char ** argv)
{
	/*初始化*/
	glutInit(&argc,argv);//用来初始化GLUT库并同窗体系统对话协商
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//用来确定所创建窗体的显示模式。本例中的參数GLUT_SINGLE 指定单缓存窗体,这也是缺省模式,相应的模式为GLUT_DOUBLE 双缓存窗体。參数GLUT_RGB指定颜色RGBA模式,这也是缺省模式,相应的模式为GLUT_INDEX 颜色索引模式窗体。
	glutInitWindowSize(800,400);//初始化窗体的大小,第一个參数为窗体的宽度,第二个參数为窗体的高度,以像素为单位。
	glutInitWindowPosition(200,200);// 设置初始窗体的位置,第一个參数为窗体左上角x的坐标,第二个參数为窗体左上角y的坐标,以像素为单位。屏幕的左上角的坐标为(0,0),横坐标向右逐渐添加,纵坐标向下逐渐添加。
	/*创建窗体*/
	glutCreateWindow("Triangle");//创建顶层窗体,窗体的名字为扩号中的參数。
	/*绘制与显示*/
	background();//自己封装的绘制背景
	glutReshapeFunc(myReshape);//注冊当前窗体的形状变化回调函数。当改变窗体大小时,该窗体的形状改变回调函数将被调用。在此例中就是myReshape指定形状变化函数。
	glutDisplayFunc(myDisplay);// 注冊当前窗体的显示回调函数。当一个窗体的图像层须要又一次绘制时,GLUT将调用该窗体的的显示回调函数。在此例中的mydisplay就是显示回调函数,显示回调函数不带不论什么參数,它负责整个图像层的绘制。我们的大部分工作将集中在这个函数中。
	glutMainLoop();//?glutMainLoop 进入GLUT事件处理循环。glutMainLoop函数在GLUT程序中最多仅仅能调用一次,它一旦被调用就不再返回,而且调用注冊过的回调函数。所以这个函数必须放在注冊回调函数的后面,此例中为glutReshapeFunc, glutDisplayFunc。
	return(0);
}

如今我们对OpenGL程序的典型的程序结构有了一个了解。首先初始化,包含对GLUT库的初始化和对窗体的设置及显示模式的设置。第二,创建窗体。第三,自己创作的核心部分。第四,glutMainLoop 进入GLUT事件处理循环。  

·glFlush迫使OpenGL函数在有限时间里执行。glFlush清空全部buffer,使全部发出的命令能在规定的时间内执行。一定不能忘记这一条语句。仅仅有加了这一句,前面的命令才干执行。

glBegin和glEnd是一一相应的。这两个函数限制了一组或多组图元的顶点定义。在这两个函数中间就是你所绘制的由多个顶点组成的图元。函数的參数表明了所绘制的图元的类型。本例中的GL_TRIANGLES 表明所绘制的图形为三角形。  

时间: 2024-10-25 14:55:19

OpenGL入门【1 高速入门】的相关文章

Windows下FFmpeg高速入门

本系列文章导航 Windows下FFmpeg高速入门 ffmpeg參数解释 mencoder和ffmpeg參数具体解释(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视频文件转换成FLV整理 java 视频处理 mencoder java 视频处理 ffmped+mencoder Windows下FFmpeg高速入门 FFmpeg简单介绍 FFmpeg是什么? FFmpeg是用于录制.转换和流化音频和视频的完整解决方式, 包含 libavcodec ,一套率先

SD卡中FAT32文件格式高速入门(图文具体介绍)

说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表) 硬件:本文SD卡为Kingston 4GB,FAT32格式,簇大小4KB,每扇区512字节. 第一章 硬盘结构与SD卡结构 1.1 硬盘介绍 1.1硬盘结构 假设你熟悉硬盘结构跳过本节.下图是硬盘的结构,假设你仅仅是为了学习SD卡FAT32文件系统的话,这里你仅仅须要注意硬盘排序结构:主引导记录

Swift语言高速入门

Swift语言高速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 2014年10月出版 定价:59.00元 428页 16开 编辑推荐 本书内容翔实,实例丰富,同步新版官方API文档和语法 语法|词法|框架覆盖全面,实战案例|配套习题丰富 多位Swift专家联合推荐,不仅是Swift入门书籍,也可做案头工具书 作者携手Swift专家在线答疑,方式例如以下: 1.专属勘误

【solr专题之中的一个】Solr高速入门

一.Solr学习相关资料 1.官方材料 (1)高速入门:http://lucene.apache.org/solr/4_9_0/tutorial.html.以自带的example项目高速介绍发Solr的基础使用. (2)API:http://lucene.apache.org/solr/4_9_0/index.html (3)reference:PDF格式,apache-solr-ref-guide-4.9.pdf 2.书籍 (1)Solr in Action.基于4.7版本号,极力推荐,此书适

C语言高速入门系列(四)

C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经过我们前面三个系列的学习,我们对C语言有了一定的了解; 如今要你写这样一个代码应该不难吧: 输入五个学生的成绩,然后求出总和与平均值,打印出结果! 相信大家都会先定义五个变量,用来存储五个学生的成绩,然后再进行计算吧! 可是,假如要求的学生不是5个而是20个,50个或者很多其它,难道你又定义一堆变量

C语言高速入门系列(一)

C语言高速入门系列(一)  本系列引言: 本教程的宗旨是将C语言入门的内容进行关键知识点的提纯,将一些笼统的废话去除; 再进行压缩,然后将本章的关键知识点做成路线图的,能够更加方便地掌握学习的方向; 最后提供相关的代码演示样例以及具体凝视,能够帮助学者更快地上手C语言! 假设对本教程有什么建议和缺点纰漏的,欢迎指出,不胜感激! 本节学习路线图: 正文: 1.计算机与程序设计语言的关系: 答:计算机是由硬件与软件系统组成,硬件==>物质基础;软件==>灵魂; 假设脱离了软件,计算机就仅仅是一台什

C语言高速入门系列(五)

C语言高速入门系列(五) C语言指针初涉                                           ------转载请注明出处:coder-pig 本节引言: 上一节我们对C语言复合数据类型中的数组进行了解析,在本节中,我们会对C语言复合数据类型中的 重点,C语言的灵魂-----指针进行学习!使用指针的优点:利用指针能够表示与使用复杂的数据结构; 更加方便地使用我们的数组与字符串;能够像汇编语言一样直接处理内存单元地址;能够动态地进行内存空间 分配,C语言指针是重点,同

SharePoint 2013 入门教程之入门手册

原文:SharePoint 2013 入门教程之入门手册 当我们搭建完环境,创建应用程序和网站集后,就已经正式开启了我们的SharePoint之旅了,进入网站以后,开始基本的使用.设置,了解SharePoint相关特性,下面,来简单了解下SharePoint吧. 1.  创建网站集完毕,打开首页,如图1: (图1 SharePoint 发布站点首页) 如上图,可能画的比较乱,11是共享本网站,12是关注此网站,12右边的是最大化内容(也就是编号5,效果如图2). 看图比较乱,上面的东西几乎都是可

XML高速入门

XML是什么 Extensible Markup Language 自己定义标签: 用来数据传输: 可扩展标记语言,是一种类似超文本标记语言的标记语言. 与HTML的比較: 1.不是用来替代HTML的. XML是对HTML的补充 2.二者目的不同 HTML是显示数据,XML是包括和数据传输. 3.语法不同 HTML并不是全部的标记都成对出现.XML要求必须成对出现,且区分大写和小写. *格式良好的XML应遵循的语法规则: 1)必须有根元素 2)必须有关闭标签 3)标记大写和小写敏感 4)元素必须