当前位置:网站首页>OpenGL中glGenBuffers glBindBuffer glBufferData的理解

OpenGL中glGenBuffers glBindBuffer glBufferData的理解

2022-08-11 05:30:00 偷不偷月

glGenBuffers glBindBuffer glBufferData的理解

//顶点数组对象
	GLuint VAO1;//即相当于unsigned int
	glGenVertexArrays(1, &VAO1);
	glBindVertexArray(VAO1);

	//顶点缓冲对象
	GLuint VBO1;
	glGenBuffers(1, &VBO1);
	glBindBuffer(GL_ARRAY_BUFFER, VBO1);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
	
	//索引缓冲对象
	GLuint EBO;
	glGenBuffers(1, &EBO);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);

	//以下两行是将VBO与着色器的Attribute进行绑定
	// //参数layout,GPU激活0号单元
	glEnableVertexAttribArray(0);
	//将数据传入着色器中。参数:layout(位置值为0的顶点属性);几维坐标;是否归一化;步长;偏移量
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
	
	glEnableVertexAttribArray(1);
	glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(sizeof(float)*3));
	
	glEnableVertexAttribArray(2);
	glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(sizeof(float) * 6));
	

参考:链接
在这里插入图片描述
在这里插入图片描述
参考:链接
在这里插入图片描述
个人理解:
第一步:GLuint VBO1;
声明一个GLuint 类型引用变量,不予赋值,待用;

第二步:glGenBuffers(1, &VBO1);
指定缓存空间数量,创建缓存空间,并把空间地址存到变量VBO1下,使用时直接调用地址;

第三步:glBindBuffer(GL_ARRAY_BUFFER, VBO1);
确定该变量存储的缓冲类型,此处为顶点缓冲对象;

第四步:glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
将相应的数据汇入。
在这里插入图片描述

原网站

版权声明
本文为[偷不偷月]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zbx727259615/article/details/124793647