文档章节

opengl 第八版的第一个示例

Ryze_Mr
 Ryze_Mr
发布于 2017/03/21 15:51
字数 201
阅读 7
收藏 0
#include <iostream>

using namespace std;

#include	"vgl.h"
#include	"LoadShaders.h"

enum VAO_IDs
{
	Triangles,
	NumVAOs
};
enum Buffer_IDs
{
	ArrayBuffer,
	NumBuffers
};
enum Atrrib_IDs
{
	vPosition = 0
};

GLuint VAOs[NumVAOs];//顶点数组
GLuint Buffers[NumBuffers];//缓存

const GLuint NumVertices = 6;//顶点数量

void init(void)
{	
	//申请顶点数组
	glGenVertexArrays(NumVAOs,VAOs);
	glBindVertexArray(VAOs[Triangles]);

	GLfloat vertices[NumVertices][2] = {
		{-0.90, -0.90},
		{ 0.85 -0.90 },
		{ -0.90, 0.85 },

		{ 0.90, -0.85 },
		{ 0.90, 0.90 },
		{ -0.85, 0.90 },
	};

	//申请缓存
	glGenBuffers(NumBuffers, Buffers);
	glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

	ShaderInfo shaders[] = {
		{GL_VERTEX_SHADER,"triangles.vert"},
		{GL_FRAGMENT_SHADER,"triangles.frag"},
		{GL_NONE,NULL}
	};

	GLuint program = LoadShaders(shaders);
	glUseProgram(program);

	glVertexAttribPointer(vPosition, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
	glEnableVertexAttribArray(vPosition);
}

void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBindVertexArray(VAOs[Triangles]);

	glDrawArrays(GL_TRIANGLES, 0, NumVertices);

	glFlush();
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGBA);
	glutInitWindowSize(512, 512),
	glutInitContextVersion(4, 3);
	glutInitContextProfile(GLUT_CORE_PROFILE);
	glutCreateWindow(argv[0]);

	//如果在申请顶点数组时glGenVertexArrays宕机
	//需要在glewInit开启glew对扩展的支持
	glewExperimental = GL_TRUE;

	if (glewInit())
	{
		cerr << "Unable to initialize glew ... exiting" << endl;
		exit(EXIT_FAILURE);
	}

	init();

	glutDisplayFunc(display);
	glutMainLoop();

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 左右震动
下一篇: JS继承
Ryze_Mr
粉丝 1
博文 33
码字总数 12207
作品 0
福州
程序员
私信 提问
谁有OpenGL 4 以上的API(离线)文档,中英都行

rt,正在学习OpenGL,现在已经有第八版的OpenGL编程指南了,但还需要一个直观的OpenGL API文档,哪位大神有??~~~

全球变冷
2016/07/21
784
0
OpenGL ES 绘制 3D 图形

OpenGL ES是 OpenGL三维图形API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。 Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 Op...

鉴客
2011/09/25
10K
4
Opengl红宝书第一个例子_VS2017_glew2.1_x64_记录成功的代码段

忙了一下午, 终于能运行: Opengl编程指南里, 书里代码不全, 好不容量才在网上找到原代码 https://blog.csdn.net/candycat1992/article/details/39676669 不知为何,之前下载glew2.1压缩包会出...

洛克人杰洛
2018/05/05
0
0
开始在 OS X 开发 OpenGL 应用

有一段时间了,我一直想着进入某些视频游戏开发领域. 对于OpenGL我也很感兴趣,并且因此我也想到了为什么不深入去研究研究OpenGL,再去做一款视频游戏呢?我已经有了许多我想要去探索的游戏的...

oschina
2014/05/13
4.2K
6
OGLplus 0.40.0 发布,OpenGL 的 C++ 封装库

OGLplus 0.40.0 发布,此版本更新内容如下: 试验性的支持 OpenGL ES v 3.0 添加了第一个给 Android 使用的 NDK 和 GLESv3 的示例 源码被清理,一些功能的实现转移到了 implement/directory。...

oschina
2013/12/24
616
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
20分钟前
0
0
一文详解微服务架构的数据设计

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮...

java菜分享
31分钟前
3
0
Java并发编程之美读书笔记-并发编程基础1

线程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,比如idea运行代码时的jvm是一个进程,但是CPU资源比较特殊,它是被分配到线程的,线程是进程的一个执行路...

hensemlee
43分钟前
1
0
【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
58分钟前
2
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部