看opengl写代码(8) 使用缓冲区

不得 “不佩服”我的解决能力!弄了 好几天,不得 不说 在WINDOSW下 写 OPENGL,真坑, 自己 更坑。


书中说到 由于 OPENGL 是 基于 客户端 /服务器 的,所以 在OPENGL 需要 数据的时候 ,都需要 将数据 从 客户端 发送到 服务器。所以 我们 把 数据 放在 服务器中。这种方式 叫做 缓冲区。(其实 自己 也 不太懂。 还是 对OPENGL 不够 理解)。


在写 下面 代码时 遇到 好几个坑:

1.在windosws 下 使用 缓冲区 ,需要 设置 glew ,具体 : http://blog.sina.com.cn/s/blog_858820890100vbys.html

2.逗比的我,在 画 三角形时, 使用了  一条直线上的 三个点。。。


给出代码:

// buffer.cpp : 定义控制台应用程序的入口点。
//
//http://blog.sina.com.cn/s/blog_858820890100vbys.html
#include "stdafx.h"
#include <gl/glew.h>
#include <gl/glut.h>
#pragma comment(lib,"glew32.lib")

#define VERTEX		0
#define INDEX		1
#define NUM_BUFFER	2
GLuint	Buffer[NUM_BUFFER];

#define BUFFER_OFFSET(off)	((GLvoid*)(NULL + (off)))

void init(){
	glClearColor(0,0,0,1);
}

static GLfloat vertexArray[] = {
	1,0,0,0,0,0, 
	 1,0,0,0.8,0.25,0,
	1,0,0,0.8,-0.6,0, 
	1,0,0,-0.25,0.25,0, 
	1,0,0,-0.5,0.5,0, 
	1,0,0,-0.75,0.9,0, 
};

static GLubyte indexArray[] = {
	3,1,2,
	2,3,4,
	1,2,3,
	2,3,5,
	1,2,3,
};

void display(){
	glClear(GL_COLOR_BUFFER_BIT);  
	//申请缓冲区
	glGenBuffers(NUM_BUFFER,Buffer);
	//绑定
	glBindBuffer(GL_ARRAY_BUFFER,Buffer[VERTEX]);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,Buffer[INDEX]);
	//分配空间以及初始化
	glBufferData(GL_ARRAY_BUFFER,sizeof(vertexArray),vertexArray,GL_STATIC_DRAW);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(indexArray),indexArray,GL_STATIC_DRAW);
	//设置顶点数组
	glInterleavedArrays(GL_C3F_V3F,0,BUFFER_OFFSET(0));
	glDrawElements(GL_TRIANGLES,15,GL_UNSIGNED_BYTE,BUFFER_OFFSET(0));;
	glFlush();
}

int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc,(char **)argv);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(100,100);
	glutCreateWindow("缓冲区");
	glewInit();
	init();
	glutDisplayFunc(display);
	glutMainLoop();
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值