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程序的更多相关文章

  1. c++学习笔记---03---从一个小程序说起2

    从一个小程序说起2 要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置.当用户按下键盘上的"Enter"键时,数据输入 ...

  2. c++学习笔记---02---从一个小程序说起

    从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...

  3. python新手第一天学习笔记-第一个ptyhon程序和python变量

    一.python 的注释和第一个python 程序 : 1.单行注释 # Author Xiajq 2.多行注释 ''' ------------注释内容----------------------- ...

  4. Android学习笔记_70_一个应用程序启动另一个应用程序的Activity

    第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...

  5. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

  6. OpenGL学习笔记之了解OpenGL

    OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 说 ...

  7. OpenGL学习笔记之配置OpenGL

    OpenGL是计算机图形学领域的一门入门语言,OpenGL开发库的一些文件在官网上可以下载到.里面包含三个文件,如下: 1.把在OpenGL开发库中LIB(库文件)glut.lib和glut32.li ...

  8. android菜鸟学习笔记5----第一个android程序

    程序功能:点击一个按钮,然后弹出一个提示信息 Step 1:在eclipse中新建一个android application project,在创建过程中不勾选create activity,这样就创 ...

  9. Mybatis学习笔记-第一个Mybatis程序

    思路 搭建环境 搭建数据库(略) CREATE DDATABASE CREATE TABLE INSERT VALUES 新建项目 普通Maven项目 删除src文件夹 --> 建立父工程 导入 ...

  10. OpenGL学习笔记3——缓冲区对象

    在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段.由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU ...

随机推荐

  1. VxWorks:添加自己组件到Tornado

    项目要求将cpci的驱动做成Tornado组件,尝试了一下! Folder FOLDER_CPCI {                    //上层组件设置  NAME  cpci componen ...

  2. HighCharts之2D堆条状图

    HighCharts之2D堆条状图 1.HighCharts之2D堆条状图源码 StackedBar.html: <!DOCTYPE html> <html> <head ...

  3. R分词

    #用于下载安装rJava 和 Rwordseg,如果安装了就注释掉 install.packages("rJava") install.packages("Rwordse ...

  4. zTree实现地市县三级级联报错(二)

    zTree实现地市县三级级联 1.具体报错如下 2014-05-10 23:29:13 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolT ...

  5. Linux显示一个二进制文件或可执行文件的完整路径

    Linux显示一个二进制文件或可执行文件的完整路径 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ which halt /sbin/halt

  6. Android APP开发入门教程-Button

    代码编写 做好准备工作后,终于可以开始写我们的hello android了,在开始编写代码之前,我们先了解几个文件: res/layout/main.xml App主窗体布局文件,你的应用长什么样都在 ...

  7. “玲珑杯”ACM比赛 Round #4 B Best couple

    一眼的KM,但是建图的时候记得不用的点设为0,点少的一边补齐,这个非常重要,因为KM追求完全匹配,如果无法完全匹配会非常慢 #include<bits/stdc++.h> using na ...

  8. devDependencies和dependencies的版本写法

    devDependencies和dependencies的版本写法 指定版本:比如1.2.2,遵循大版本.次要版本.小版本的格式规定,安装时只安装指定版本. 波浪号(tilde)+指定版本:比如~1. ...

  9. JavaScript设计模式(7)-设配器模式

    适配器模式 1. 作用: 协调两个不同的接口 2. 适用场景 适配器适用于客户期待的接口与现有 API 提供的接口不兼容这种场景.他只能用来协调语法上的差异问题.适配器所适配的两个方法执行的应该是类似 ...

  10. 第十篇:K均值聚类(KMeans)

    前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类 ...