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

网站怎么分工做企业网站推广优化公司

网站怎么分工做,企业网站推广优化公司,wordpress的title怎么书写,做网站需要注意的地方OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements:如果使用了ebo,最后一个参数可以写03.glDrawElements:如果使用了e…

OpenGL笔记八之EBO和EBO绘制流程

—— 2024-07-07 晚上

bilibili赵新政老师的教程看后笔记

code review!

文章目录

  • OpenGL笔记八之EBO和EBO绘制流程
    • 1.EBO
    • 2.glDrawElements:如果使用了ebo,最后一个参数可以写0
    • 3.glDrawElements:如果使用了ebo,假设最后一个参数是数字,表示ebo内偏移量
      • 3.1.count改为3,偏移量为0
      • 3.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\n""layout (location = 0) in vec3 aPos;\n""void main()\n""{\n""   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n""}\0";const char* fragmentShaderSource ="#version 330 core\n""out vec4 FragColor;\n""void main()\n""{\n""   FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n""}\n\0";//2 创建Shader程序(vs、fs)GLuint 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.tj-hxxt.cn/news/95837.html

相关文章:

  • 厦门网站建设和空间跨境电商平台
  • 网站建设公司广州增城seo推广有哪些
  • 会计做帐模板网站百度搜索引擎广告投放
  • 做本地的分类信息网站关键词优化技巧
  • 寻花问柳专注做一家男人喜欢的网站青岛网站快速排名优化
  • 苏州网站建设风兰网络推广外包代理
  • 南阳网站运营招聘信息沧州网站推广优化
  • 网线制作原理百度上做优化一年多少钱
  • 有什么专门搜试卷做的网站一起来看在线观看免费
  • 泉州北京网站建设seo点击软件哪个好用
  • 临漳网站制作seo关键词快速排名前三位
  • 网站建设既有书籍又有光盘网店推广的作用
  • 网站挂百度广告大数据培训课程
  • 苏州网站建设公司电话高端网站建设公司排名
  • 哪些网站的数据库做的好百度信息流广告
  • 订阅号上链接的网站怎么做的优化内容
  • 网站建设合作方案2345网址导航官网
  • 河南实力网站建设首选营销型网站外包
  • 网站首页页面代码邯郸seo排名
  • php响应式个人博客网站设计寻找客户的12种方法
  • 自己做的网站涉黄谷歌搜索引擎 google
  • 聊城网站建设费用在线seo工具
  • 烟台网站排名系统互联网平台推广怎么做
  • 个人网站链接怎么做品牌策划公司哪家好
  • 云南网站建设专业品牌建网络平台要多少费用
  • wordpress文章自动标签重庆seo网站管理
  • canvas做的手机网站seo兼职平台
  • 综合信息网站模板情感营销经典案例
  • 手机新闻网站模板美国婚恋网站排名
  • 购买网站服务器域名查询 站长查询