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

广州注册公司在哪个网站长春高档网站建设

广州注册公司在哪个网站,长春高档网站建设,asp装修网站源码,渭南网站建设哪里便宜一.关键名词解释 VAO: Vertex Array Object, 顶点数组对象#xff0c;你要绘制的图形。 VBO:Vertex Buffer Object, 顶点缓冲对象#xff0c;所有顶点的集合。 EBO:Element Buffer Object, 元素缓冲对象#xff0c;顶点的索引值。 IBO: Index Buffer Object, 索引缓冲对象。…一.关键名词解释 VAO: Vertex Array Object, 顶点数组对象你要绘制的图形。 VBO:Vertex Buffer Object, 顶点缓冲对象所有顶点的集合。 EBO:Element Buffer Object, 元素缓冲对象顶点的索引值。 IBO: Index Buffer Object, 索引缓冲对象。 管线又称图像渲染管线将原始的3D坐标转换为屏幕上有颜色的像素。分为两部分 第一部分就是将3D坐标转成平面的2D坐标第二部分将2D坐标转成屏幕有颜色的像素。 着色器管线接受3D坐标然后转化成有颜色的像素。期间的工作很复杂GPU上有成千上万个小处理器核心它们能够并行处理小程序这些小程序可以是默认的也可以是开发者自定义的这些用来最终处理成2D有颜色的像素的程序统称为着色器。 顶点着色器可编程的着色器前面所说的并行小程序的其中一种它的作用是将用户输入的3D坐标空间位置(向量vec3)转成空间位置(向量vec4)。向量4中最后个参数w原文作者后续会说这里先记着。 图元装配告诉opengl你要绘制的图片是什么类型的绘制指令需要指定你要绘制成什么样的形状这里常用的有GL_POINTS(点), GL_TRIANGLES(三角形), GL_LINE_STRIPS(线)。 几何着色器根据图元装配指定的类型会生成新的顶点和新的三角形。(具体还未清楚具体作用)。 光栅化阶段将图元映射到屏幕上真正的像素点生成供片段着色器使用的片段。在使用片段着色器之前裁切掉视图以外的像素点提高效率。 片段着色器可编程的着色器主要是计算一个像素真正的颜色。通常片段着色器包含3D厂场景的数据(包含光照阴影光的颜色) 这些都被计算在内。 测试与混合所有颜色确定之后那就是透明度的问题对吧当然还会确认这个像素呈现的深度和模板值。深度原文作者理解的就是z轴的值代表离你的距离是代表在物体的前面还是后面能理解吗模板值原文作者后续会讲后面再整理。 总之着色器渲染的过程顶点输入(接受用户输入的3D坐标数组)》顶点着色器》图元装配》几何着色器》光栅化阶段》片段着色器》测试与混合 二.开始创建六边形编码 1.创建两个着色器顶点和片段 // 顶点着色器的代码 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{\nFragColor vec4(1.0f, 0.5f, 0.2f, 1.0f);\n}\n\0; // 构建顶点着色器// 1.创建着色器对象unsigned int vertexShader;vertexShader glCreateShader(GL_VERTEX_SHADER);// 2.将着色器代码关联到对象上并编译glShaderSource(vertexShader, 1, vertexShaderSource, NULL);glCompileShader(vertexShader);// 3.检查编译是否成功int success;char infoLog[512];glGetShaderiv(vertexShader, GL_COMPILE_STATUS, success);if(!success){glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);std::cout ERROR::SHADER::VERTEX::COMPILATION_FAILED\n infoLog std::endl;}// 构建片段着色器unsigned int fragmentShader;fragmentShader glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, fragmentShaderSource, NULL);glCompileShader(fragmentShader);glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, success);if(!success){glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);std::cout ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n infoLog std::endl;} 2.编译完成之后链接到程序对象 // 编译完成之后链接到程序对象unsigned int shaderProgram;shaderProgram glCreateProgram();glAttachShader(shaderProgram, vertexShader);glAttachShader(shaderProgram, fragmentShader);glLinkProgram(shaderProgram);glGetProgramiv(shaderProgram, GL_LINK_STATUS, success);// 判断是否链接程序成功if(!success) {glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);}// 删除着色器对象在把着色器对象链接到程序对象以后// 记得删除着色器对象我们不再需要它们glDeleteShader(vertexShader);glDeleteShader(fragmentShader); 3.构建顶点创建VBOVAOEBO // 顶点输入六边形float vertices[] {-0.5f, 0.5f, 0.0f,0.0f, 0.5f, 0.0f,0.5f, 0.5f, 0.0f,1.0f, 0.0f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, -0.5f, 0.0f,-0.5f, -0.5f, 0.0f,-1.0f, 0.0f, 0.0f};unsigned int indices[] {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 0};// 建立缓冲对象unsigned int VBO;unsigned int VAO;unsigned int EBO;glGenVertexArrays(1, VAO);glGenBuffers(1, VBO);glGenBuffers(1, EBO);glBindVertexArray(VAO);// 绑定到缓冲bufferglBindBuffer(GL_ARRAY_BUFFER, VBO);// 刷入缓冲bufferglBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);// 解析顶点数据// 第一个参数: 0, 着色器的location 0,对应这里的0// 第二个参数: 3, 顶点数据是3个坐标构成这里是3// 第三个参数: 数据类型GL_FLOAT// 第四个参数: 是否标准化标准化就会映射到0~1之间// 第五个参数步长: 表示每个顶点的所占空间的大小// 第六个参数: 代表偏移默认位置为0glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);// 启动顶点属性glEnableVertexAttribArray(0);// 解绑VAOglBindBuffer(GL_ARRAY_BUFFER, 0);glBindVertexArray(0); 4.绘制使用VAO释放资源 // 等待用户关闭窗口while(!glfwWindowShouldClose(window)){processInput(window);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glUseProgram(shaderProgram);// 绘制物体glBindVertexArray(VAO);glDrawElements(GL_LINES, 16, GL_UNSIGNED_INT, 0);// 双缓冲交换glfwSwapBuffers(window);// 响应各种交互事件glfwPollEvents();}// 释放资源glDeleteVertexArrays(1, VAO);glDeleteBuffers(1, VBO);glDeleteBuffers(1, EBO);glfwTerminate();return 0; 三.demo的地址 learningOpengl: 一起学习opengl
http://www.dnsts.com.cn/news/137622.html

相关文章:

  • 自己建设影视网站邯郸wap网站建设价格
  • 做网站用哪个ecalipse如何让WordPress快起来
  • 百度网盘网站入口wordpress siren主题
  • 中国文化网站建设策划书企业建设网站有什么作用
  • 汽车网站建设方案服装设计效果图
  • 石家庄网站建设高端制作网页的方法
  • 雄安做网站江西九江怎么样
  • 微信网站开发js框架微信官网网页版登录入口
  • 新城免费做网站win2008 wordpress
  • 国内的c2c网站有哪些dedecms 门户网站制作
  • 做网站得多长时间gulf oil wordpress
  • 甜点网站里的新闻资讯怎么做东莞容桂网站制作
  • 茂易网站建设如何制作百度网站地图
  • 无锡软件外包公司排名泰安做网站优化
  • 商丘网站建设seo优化公司哪家好
  • 免费网站打包app上海注册公司哪里政策好
  • 站长素材网app免费下载维拓设计在北京排名
  • 网站301跳转效果低代码平台设计
  • 城网站建设网站兼容ie7
  • asp.net企业网站源码数据库工程师
  • 信息网站 微站网络推广软件平台
  • 网站搭建技术要求邯郸公众号小程序制作
  • 音乐网站怎么做社交的德阳互联免费云主机
  • 哪家网站专做女性服装烟台网站建设优惠臻动传媒
  • 网站建设和管理情况自媒体创业计划书word
  • 网站服务器和空间的区别新闻 最新消息
  • 做自己的外贸网站怎样赚钱网站建设打造
  • 搜索各大网站北京公司网站制作方法
  • 大石桥做网站长春seo排名外包
  • 做同业业务一般关注哪些网站网站怎么做防御