当前位置: 首页 > news >正文

opengl学习-2vao和vbo(通义千问的例子)

#include <GL/glew.h>
#include <GLFW/glfw3.h>int main() {// 初始化GLFWif (!glfwInit()) {return -1;}// 创建窗口GLFWwindow* window = glfwCreateWindow(640, 480, "VAO and VBO Example", NULL, NULL);if (!window) {glfwTerminate();return -1;}// 使窗口的上下文成为当前线程的主上下文glfwMakeContextCurrent(window);// 初始化GLEWif (glewInit() != GLEW_OK) {return -1;}// 顶点数据GLfloat vertices[] = {-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // 位置, 颜色0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // 位置, 颜色0.0f,  0.5f, 0.0f, 0.0f, 0.0f, 1.0f  // 位置, 颜色};// 生成VBOGLuint vbo;glGenBuffers(1, &vbo);glBindBuffer(GL_ARRAY_BUFFER, vbo);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 生成VAOGLuint vao;glGenVertexArrays(1, &vao);glBindVertexArray(vao);// 配置顶点属性glEnableVertexAttribArray(0); // 位置属性glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (void*)0);glEnableVertexAttribArray(1); // 颜色属性glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (void*)(3 * sizeof(GLfloat)));// 解绑VAO和VBOglBindVertexArray(0);glBindBuffer(GL_ARRAY_BUFFER, 0);// 渲染循环while (!glfwWindowShouldClose(window)) {// 处理输入if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);// 清屏glClear(GL_COLOR_BUFFER_BIT);// 绑定VAO并绘制glBindVertexArray(vao);glDrawArrays(GL_TRIANGLES, 0, 3);// 交换缓冲区并处理事件glfwSwapBuffers(window);glfwPollEvents();}// 清理资源glDeleteVertexArrays(1, &vao);glDeleteBuffers(1, &vbo);// 终止GLFWglfwTerminate();return 0;
}

VBO 用于存储顶点数据,减少CPU和GPU之间的数据传输开销。
VAO 用于存储顶点属性的配置信息,简化渲染调用。
通过结合使用VAO和VBO,可以高效地管理和渲染复杂的3D模型。


http://www.mrgr.cn/news/64332.html

相关文章:

  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.3-4.4
  • 什么是护网(HVV)需要什么技术?(内附护网超全资料包)
  • 控制台安全内部:创新如何塑造未来的硬件保护
  • Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域
  • Dolphins 简介——一种新颖的多模态语言模型
  • SQLSERVER-配置记录
  • 4.2.4 根据DTS完成timer初始化
  • 491.递增子序列
  • 爬虫学习2
  • LeetCode25:K个一组翻转链表
  • 【面渣逆袭】JavaSE笔记
  • Gin入门笔记
  • 深度学习基础—序列采样
  • 网络:ARP的具体过程和ARP欺骗
  • MATLAB中sort函数用法
  • 【Kaggle | Pandas】练习6:重命名和组合
  • cn.afterturn.easypoi.exception.excel.ExcelExportException: Excel导出错误 -> 修正过程。
  • (九)JavaWeb后端开发——Servlet
  • 【机器学习】回归树
  • 微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析
  • 异步回调之Join
  • 第十七课 component组件解析
  • Rust语言有哪些常用语句?
  • zyb 的 Codeforces Round 983 (Div. 2)
  • WPF+MVVM案例实战(十八)- 自定义字体图标按钮的封装与实现(ABD类)
  • Python使用K-means实现文本聚类