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

各主流网站做景区宣传江苏做帖子网站

各主流网站做景区宣传,江苏做帖子网站,wordpress建站云盘,fw网页制作教程OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements#xff1a;如果使用了ebo#xff0c;最后一个参数可以写03.glDrawElements#xff1a;如果使用了e…OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements如果使用了ebo最后一个参数可以写03.glDrawElements如果使用了ebo假设最后一个参数是数字表示ebo内偏移量3.1.count改为3偏移量为03.2.count改为3偏移量为3 4.glDrawElements如果没有使用ebo可以直接将cpu端的indices数组传输进去(不推荐这种方式)5.main.cpp 1.EBO 代码 void prepareVAO() {//1 准备positionsfloat positions[] {-0.5f, -0.5f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, 0.5f, 0.0f,0.5f, 0.5f, 0.0f,};unsigned int indices[] {0, 1, 2,2, 1, 3};//2 VBO创建GLuint vbo;glGenBuffers(1, vbo);glBindBuffer(GL_ARRAY_BUFFER, vbo);glBufferData(GL_ARRAY_BUFFER, sizeof(positions), positions, GL_STATIC_DRAW);//3 EBO创建GLuint ebo;glGenBuffers(1, ebo);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);//4 VAO创建glGenVertexArrays(1, vao);glBindVertexArray(vao);//5 绑定vbo ebo 加入属性描述信息//5.1 加入位置属性描述信息glBindBuffer(GL_ARRAY_BUFFER, vbo);glEnableVertexAttribArray(0);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (void*)0);//5.2 加入ebo到当前的vaoglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBindVertexArray(0); }对比VAO 2.glDrawElements如果使用了ebo最后一个参数可以写0 运行 关键代码 // glDrawArrays(GL_LINE_STRIP, 0, 6); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); // glBindVertexArray(0);3.glDrawElements如果使用了ebo假设最后一个参数是数字表示ebo内偏移量 3.1.count改为3偏移量为0 运行 关键代码 glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0);3.2.count改为3偏移量为3 运行 关键代码 glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, (void*)(sizeof(int)*3));4.glDrawElements如果没有使用ebo可以直接将cpu端的indices数组传输进去(不推荐这种方式) 运行 关键代码 //5.2 加入ebo到当前的vao // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); //需要注释掉unsigned int indices[] {0, 1, 2,2, 1, 3 }; glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, indices);5.main.cpp 代码 #include iostream#define DEBUG//注意glad头文件必须在glfw引用之前引用 #include glad/glad.h #include GLFW/glfw3.h #include string #include assert.h//断言 #include wrapper/checkError.h #include application/Application.h/* *┌────────────────────────────────────────────────┐ *│ 目 标 学习EBO进行绘制 *│ 讲 师 赵新政(Carma Zhao) *│ 拆分目标 *│ *│  1 创建EBO灌入数据与vao绑定 *│  2 练习glDrawElements * -如果使用了ebo最后一个参数可以写0 * -如果使用了ebo假设最后一个参数是数字表示ebo内偏移量 * -如果没有使用ebo可以直接将cpu端的indices数组传输进去 *└────────────────────────────────────────────────┘ */GLuint vao, program;void OnResize(int width, int height) {GL_CALL(glViewport(0, 0, width, height));std::cout OnResize std::endl; }void OnKey(int key, int action, int mods) {std::cout key std::endl; }void prepareVAO() {//1 准备positionsfloat positions[] {-0.5f, -0.5f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, 0.5f, 0.0f,0.5f, 0.5f, 0.0f,};unsigned int indices[] {0, 1, 2,2, 1, 3};//2 VBO创建GLuint vbo;glGenBuffers(1, vbo);glBindBuffer(GL_ARRAY_BUFFER, vbo);glBufferData(GL_ARRAY_BUFFER, sizeof(positions), positions, GL_STATIC_DRAW);//3 EBO创建GLuint ebo;glGenBuffers(1, ebo);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);//4 VAO创建glGenVertexArrays(1, vao);glBindVertexArray(vao);//5 绑定vbo ebo 加入属性描述信息//5.1 加入位置属性描述信息glBindBuffer(GL_ARRAY_BUFFER, vbo);glEnableVertexAttribArray(0);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (void*)0);//5.2 加入ebo到当前的vaoglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBindVertexArray(0); }void prepareShader() {//1 完成vs与fs的源代码并且装入字符串const char* vertexShaderSource #version 330 core\nlayout (location 0) in vec3 aPos;\nvoid main()\n{\n gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0);\n}\0;const char* fragmentShaderSource #version 330 core\nout vec4 FragColor;\nvoid main()\n{\n FragColor vec4(1.0f, 0.5f, 0.2f, 1.0f);\n}\n\0;//2 创建Shader程序vs、fsGLuint vertex, fragment;vertex glCreateShader(GL_VERTEX_SHADER);fragment glCreateShader(GL_FRAGMENT_SHADER);//3 为shader程序输入shader代码glShaderSource(vertex, 1, vertexShaderSource, NULL);glShaderSource(fragment, 1, fragmentShaderSource, NULL);int success 0;char infoLog[1024];//4 执行shader代码编译 glCompileShader(vertex);//检查vertex编译结果glGetShaderiv(vertex, GL_COMPILE_STATUS, success);if (!success) {glGetShaderInfoLog(vertex, 1024, NULL, infoLog);std::cout Error: SHADER COMPILE ERROR --VERTEX \n infoLog std::endl;}glCompileShader(fragment);//检查fragment编译结果glGetShaderiv(fragment, GL_COMPILE_STATUS, success);if (!success) {glGetShaderInfoLog(fragment, 1024, NULL, infoLog);std::cout Error: SHADER COMPILE ERROR --FRAGMENT \n infoLog std::endl;}//5 创建一个Program壳子program glCreateProgram();//6 将vs与fs编译好的结果放到program这个壳子里glAttachShader(program, vertex);glAttachShader(program, fragment);//7 执行program的链接操作形成最终可执行shader程序glLinkProgram(program);//检查链接错误glGetProgramiv(program, GL_LINK_STATUS, success);if (!success) {glGetProgramInfoLog(program, 1024, NULL, infoLog);std::cout Error: SHADER LINK ERROR \n infoLog std::endl;}//清理glDeleteShader(vertex);glDeleteShader(fragment); }void render() {//执行opengl画布清理操作GL_CALL(glClear(GL_COLOR_BUFFER_BIT));//1 绑定当前的programGL_CALL(glUseProgram(program));//2 绑定当前的vaoGL_CALL(glBindVertexArray(vao));//3 发出绘制指令 // glDrawArrays(GL_LINE_STRIP, 0, 6);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);glBindVertexArray(0); }int main() {if (!app-init(800, 600)) {return -1;}app-setResizeCallback(OnResize);app-setKeyBoardCallback(OnKey);//设置opengl视口以及清理颜色GL_CALL(glViewport(0, 0, 800, 600));GL_CALL(glClearColor(0.2f, 0.3f, 0.3f, 1.0f));prepareShader();prepareVAO();while (app-update()) {render();}app-destroy();return 0; }
http://www.hkea.cn/news/14440526/

相关文章:

  • dw怎么做网站后台设计网站平台风格
  • html做企业门户网站企业vi设计欣赏
  • 网站设计论文前言移动网站 制作
  • 网站建立的连接不安全门户建设目标
  • 制作网站费用怎么做分录如何用本地视频做网站
  • 医院风格 wordpress360优化大师下载
  • 自己做网站如何月入3k阿里云wordpress菜鸟
  • 大连网站建设腾讯大厦wordpress论坛搭建
  • 在网站怎么做代销使用阿里云部署wordpress
  • 濮阳市做网站河北seo推广公司
  • 网站新域名查询免费开发app平台下载
  • 怎么在百度上创建网站seo整站优化报价
  • 昆明网站建设搜q.479185700微盟微商城电商小程序
  • 房地产集团网站建设方案国内ip地址免费
  • 触屏版网站模板sae wordpress 升级
  • vps网站管理器手机建立一个免费网站
  • 文化网站建设需要的功能全网线报 实时更新
  • 做社交的招聘网站卧龙区网站建设
  • go语言网站开发教程百度网盘登录入口 网页
  • 织梦cms建站百度网做网站吗
  • 泊头市网站建设价格wordpress留言的小伙伴
  • 做网站绑定 对应的域名制作一个网站的流程有哪些
  • 南京网站制作报价基于cms设计网站的背景意义
  • 建站宝盒后台wordpress 页码插件
  • 宁波方正建设监理网站西安产品设计公司有哪些
  • 中山网站设计收费标准一个专门做海鲜的网站
  • 华强北附近网站建设WordPress模版二次元
  • 做视频的素材什么网站好免费建立单位的网站
  • 河北建设信息平台网站小程序开发公司案例
  • 苏州全网网站建设湖南网络推广服务