OpenGL学习笔记:第一个OpenGL程序
OpenGL环境搭建参考博客:VS2015下OpenGL库的配置。
#include<GL\glew.h>
#include<GLTools.h>
#include<GLShaderManager.h> #ifdef __APPLE__
#include<GL\glut.h>
#else
#define FREEGLUT_STATIC
#include<GL\glut.h>
#endif GLShaderManager shaderManager; // 声明一个着色器管理器的实例
GLBatch triangleBatch; // 声明一个GLBatch实例 // 窗口大小改变函数
void ChangeSize(int w,int h) {
// 修改视窗的大小
glViewport(, , w, h);
} // 设置渲染的初始化
void SetupRC() {
// 设置背景颜色
glClearColor(0.0f, 0.0f, 1.0f, 1.0f); // 设置为蓝色 shaderManager.InitializeStockShaders(); // 设置三角形
// 顶点组成三角形图元
GLfloat vVerts[] = {
-0.5f,0.0f,0.0f,
0.5f,0.0f,0.0f,
0.0f,0.5f,0.0f
}; // 下面代码建立一个三角形的批次,仅包含三个顶点
triangleBatch.Begin(GL_TRIANGLES, );
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End(); } // 绘制场景
void RenderScene(void) {
// 清除缓冲区
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // 将数组传递给着色器
// 着色器用制定的颜色进行渲染
GLfloat vRed[] = { 1.0f,0.0f,0.0f,1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw(); // 指示将集合图形提交到着色器 glutSwapBuffers(); } // 主函数
int main(int argc, char *argv[]) {
gltSetWorkingDirectory(argv[]); // 调用glutInit函数传输命令行参数并初始化GLUT库
glutInit(&argc, argv); // 告诉GLUT库,在创建窗口时要使用那种类型的显示模式
// GLUT_DOUBLE表示双缓冲窗口,GLUT_RGBA表示RGBA颜色模式
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); //设置GLUT窗口的大小,创建以"Triangle"为标题的窗口
glutInitWindowSize(, );
glutCreateWindow("Triangle"); //为改变窗口大小而设置一个回调函数
//注册一个函数以包含OpenGL渲染代码
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene); // 调用glewInit初始化GLEW库
// 检查取人驱动程序初始化过程无问题
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error:%s\n", glewGetErrorString(err));
return ;
} SetupRC(); // glutMainLoop函数负责处理所有操作系统特定的消息、按键动作等直到我们关闭程序
glutMainLoop();
return ; }
运行结果:

OpenGL学习笔记:第一个OpenGL程序的更多相关文章
- c++学习笔记---03---从一个小程序说起2
从一个小程序说起2 要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置.当用户按下键盘上的"Enter"键时,数据输入 ...
- c++学习笔记---02---从一个小程序说起
从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...
- python新手第一天学习笔记-第一个ptyhon程序和python变量
一.python 的注释和第一个python 程序 : 1.单行注释 # Author Xiajq 2.多行注释 ''' ------------注释内容----------------------- ...
- Android学习笔记_70_一个应用程序启动另一个应用程序的Activity
第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...
- OpenGL学习笔记1——第一个程序
学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...
- OpenGL学习笔记之了解OpenGL
OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 说 ...
- OpenGL学习笔记之配置OpenGL
OpenGL是计算机图形学领域的一门入门语言,OpenGL开发库的一些文件在官网上可以下载到.里面包含三个文件,如下: 1.把在OpenGL开发库中LIB(库文件)glut.lib和glut32.li ...
- android菜鸟学习笔记5----第一个android程序
程序功能:点击一个按钮,然后弹出一个提示信息 Step 1:在eclipse中新建一个android application project,在创建过程中不勾选create activity,这样就创 ...
- Mybatis学习笔记-第一个Mybatis程序
思路 搭建环境 搭建数据库(略) CREATE DDATABASE CREATE TABLE INSERT VALUES 新建项目 普通Maven项目 删除src文件夹 --> 建立父工程 导入 ...
- OpenGL学习笔记3——缓冲区对象
在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段.由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU ...
随机推荐
- DirectDraw用到的DDSURFACEDESC2
DDSURFACEDESC2 结构定义一个需求的平面.下面的例子演示了结构的定义和标志位的设定: // Create the primary surface with one back buffer. ...
- freemarker中的split字符串分割
freemarker中的split字符串分割 1.简易说明 split分割:用来根据另外一个字符串的出现将原字符串分割成字符串序列 2.举例说明 <#--freemarker中的split字符串 ...
- Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around
1.错误描述 INFO:2015-05-01 11:12:15[localhost-startStop-1] - Root WebApplicationContext: initialization ...
- 决策树系列(四)——C4.5
预备知识:决策树.ID3 如上一篇文章所述,ID3方法主要有几个缺点:一是采用信息增益进行数据分裂,准确性不如信息增益率:二是不能对连续数据进行处理,只能通过连续数据离散化进行处理:三是没有采用剪枝的 ...
- 自定义JS乘法运算误差解决!
在实际开发中遇到这样一个乘法公式:数量*单价=总价 像这样的浮点数列子:200*8.2,JS算出的结果是: 像这种浮点数的乘法计算就会有误差,我们需要得到准确的值应该是:1640,与我们后台C#计算结 ...
- C#图解教程 第十六章 转换
转换 什么是转换隐式转换显式转换和强制转换 强制转换 转换的类型数字的转换 隐式数字转换溢出检测上下文 1.checked和unchecked运算符2.checked语句和unchecked语句 显式 ...
- Treeview 丢失焦点后依然高亮 SelectedNode
参考:StackOverFlow.Control.Validating 事件 注意 TreeView 的 HideSelection 要保持为默认值True. private TreeNode pre ...
- [POJ2115]C Looooops 拓展欧几里得
原题入口 这个题要找到本身的模型就行了 a+c*x=b(mod 2k) -> c*x+2k*y=b-a 求这个方程对于x,y有没有整数解. 这个只要学过拓展欧几里得(好像有的叫扩展欧几里德QA ...
- 【SPOJ】Longest Common Substring(后缀自动机)
[SPOJ]Longest Common Substring(后缀自动机) 题面 Vjudge 题意:求两个串的最长公共子串 题解 \(SA\)的做法很简单 不再赘述 对于一个串构建\(SAM\) 另 ...
- 论文学习:Fully Convolutional Networks for Semantic Segmentation
发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...