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

泗洪县城乡建设局网站深圳设计公司排名一百

泗洪县城乡建设局网站,深圳设计公司排名一百,建设电子商务网站的目的,广告策划案例范文前言 本篇在讲什么 本篇为蓝宝书学习笔记 原子计数器 本篇适合什么 适合初学Open的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践#xff0c;轻理论#… 前言 本篇在讲什么 本篇为蓝宝书学习笔记 原子计数器 本篇适合什么 适合初学Open的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践轻理论快速上手 提供全流程的源码内容 ★提高阅读体验★ ♠ 一级标题 ♥ 二级标题 ♣ 三级标题 ♦ 四级标题 目录♠ 原子计数器♠ 用法♥ 声明♥ 绑定♥ 重置♥ 计数♠ 案例♠ 推送♠ 结语♠ 原子计数器 什么是原子计数器 原子计数器是一种特殊的变量表示的是多个着色器之间共享的存储这个存储和一个缓冲对象关联而且我们可以调用特定的函数进行原子内存操作 原子计数器的作用 变量本身的功能是用于计数 ♠ 用法 ♥ 声明 layout (binding3,offset8) uniform atomic_uint my_variable;声明了原子计数器my_variable并绑定在3上其中起始位置是8 ♥ 绑定 GLuint buf; glGenBuffers(1, buf); glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, buf); glBufferData(GL_ATOMIC_COUNTER_BUFFER, 16 * sizeof(GLuint), NULL, GL_DYNAMIC_COPY); glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER, 3, buf);同uniform和buffer相同可以使用相同的方式将缓存对象绑定至绑定点上特定参数GL_ATOMIC_COUNTER_BUFFER ♥ 重置 在使用前我们要重置计数器变量书中提供了三种方式重设变量 glBufferSubData const GLuint zero 0; glBufferSubData(GL_ATOMIC_COUNTER_BUFFER, 2 * sizeof(GLuint), sizeof(GLuint), zero);通过glBufferSubData更新指定位置的数据 glMapBufferRange GLuint * data (GLuint *)glMapBufferRange(GL ATOMIC COUNTER BUFFER, 0, 16 * sizeof(GLuint), GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT); data[2] 0; glUnmapBuffer(GL_ATOMIC_COUNTER_BUFFER);通过glMapBufferRange获取变量地址后直接赋值 glClearBufferSubData glClearBufferSubData(GL_ATOMIC_COUNTER_BUFFER, GL_R32UI, 2 * sizeof(GLuint), sizeof(GLuint), GL_RED_INTEGER, GL_UNSIGNED_INT, zero);通过glClearBufferSubData赋值 ♥ 计数 OpenGL提供了三种用于计数的着色器函数 加一 uint atomicCounterIncrement(atomic_uint a);减一 uint atomicCounterDecrement(atomic_uint a);获取值 uint atomicCounter(atomic_uint a);♠ 案例 我们来看一个完整的演示示例吧改例子将一个计数器绑定到缓存后并清零通过计数器的数量来判断颜色的显示 注该例子直接修改OpenGl超级宝典官方示例singletri.cpp只需修改startup方法即可 virtual void startup() {static const char * vs_source[] {#version 450 core \n \n \nvoid main(void) \n{ \n const vec4 vertices[] vec4[](vec4( 0.25, -0.25, 0.5, 1.0), \n vec4(-0.25, -0.25, 0.5, 1.0), \n vec4( 0.25, 0.25, 0.5, 1.0)); \n \n gl_Position vertices[gl_VertexID]; \n} \n};static const char * fs_source[] {#version 450 core \n \n \nlayout (binding0) uniform atomic_uint my_variable; \n \nout vec4 color; \n \nvoid main(void) \n{ \n uint counter atomicCounterIncrement(my_variable); \n if(counter20000){ \n color vec4(1.0, 0.8, 1.0, 1.0); \n }else{ \n color vec4(0.0, 0.8, 1.0, 1.0); \n } \n } \n};program glCreateProgram();GLuint fs glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fs, 1, fs_source, NULL);glCompileShader(fs);GLuint vs glCreateShader(GL_VERTEX_SHADER);glShaderSource(vs, 1, vs_source, NULL);glCompileShader(vs);glAttachShader(program, vs);glAttachShader(program, fs);glLinkProgram(program);glGenVertexArrays(1, vao);glBindVertexArray(vao);// 绑定缓存GLuint buf;glGenBuffers(1, buf);glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, buf);glBufferData(GL_ATOMIC_COUNTER_BUFFER, 16 * sizeof(GLuint), NULL, GL_DYNAMIC_COPY);glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER, 0, buf);// 清零计数器const GLuint zero 0;glBufferSubData(GL_ATOMIC_COUNTER_BUFFER, 2 * sizeof(GLuint), sizeof(GLuint), zero); }在counter20000下显示效果如下 在counter20000下显示效果如下 ♠ 推送 Github https://github.com/KingSun5♠ 结语 若是觉得博主的文章写的不错不妨关注一下博主点赞一下博文另博主能力有限若文中有出现什么错误的地方欢迎各位评论指摘。 本文属于原创文章转载请评论留言并在转载文章头部著名作者出处
http://www.ho-use.cn/article/10822669.html

相关文章:

  • 成都 网站备案 幕布拍摄点南京seo全网营销
  • qq网页游戏排行榜重庆seo俱乐部
  • 百度权重高的网站电脑上自己做科目一的网站
  • h5页面制作网站自己做视频网站能赚钱
  • php网站管理系统宁波男科医院哪家比较好
  • 电话销售-网站建设-开场白网站搜索排名优化软件
  • 上海网站建设网站游戏多梦wordpress
  • 网站页面组成部分做网站网页需要学些什么
  • 国内建设地铁的公司网站泰州网站制作计划
  • 公司网站招聘板块怎么做进行seo网站建设
  • 如何做响应式的网站关键词数据分析
  • 商务网站建设与运营色盲眼镜
  • 家装网站建设东莞网站制作公司联系方式
  • 温州网站开发app制作企业网址查询
  • 大学生做网站找人做网站要拿到源代码吗
  • 用手机做网站服务器服装设计画图软件app
  • 999免费网站传奇个人网站备案电话访谈
  • 温州网站建设模板下载免费深圳软件开发定制
  • 网上商城网站开发官方网站后台怎样做超链接
  • 程序员做网站类网站wordpress友链插件
  • photoshop网站模板设计教程100款不良网站进入窗口软件
  • 国外手做网站php网站cms
  • 行业网站开发方案嘉兴网站建设
  • 如何更快的让百度收录网站ftp上传网站
  • 网站上传空间的ip地址吗做网站品牌
  • 网站 栏目有没有网站
  • 谷歌官方网站电器企业网站建站
  • 郑州网站优化排名推广加强官网建设
  • 上海傲石设计网站建设网站主机
  • 快速网站推广工具wordpress查看访问