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

vps主机可以做几个网站专业团队为您服务的句子

vps主机可以做几个网站,专业团队为您服务的句子,青春网站建设工作室,网站设计结构图用什么做着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。 // 顶点着色器 #version 330 core // 0号栏位读取顶点坐标 layout (location 0) in vec3 aPos; //1号栏位读取颜色颜色 …着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。 // 顶点着色器 #version 330 core // 0号栏位读取顶点坐标 layout (location 0) in vec3 aPos; //1号栏位读取颜色颜色 layout (location 1) in vec3 aColor; // 输出给 片段着色器 out vec4 vertexColor; void main() { // gl_Position 是固定的名称 用来保存 顶点坐标的gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0); vertexColor vec4(aColor.x,aColor.y,aColor.z,1.0); }// 片段着色器 #version 330 core // 输出一个 vec4类型的变量 out vec4 FragColor; // 从cpu中读取 uniform vec4 outColor; //从顶点着色器中获得 in vec4 vertexColor; void main() { FragColor vertexColor; } 详细的着色器内容查看文档 多元色四边形 效果 代码 #define GLEW_STATIC // 这个一定要加不然报错 静态链接库 #includeiostream #includeGL/glew.h #includeGLFW/glfw3.h using namespace std; void processInput(GLFWwindow); void processInput(GLFWwindow* window) {//如果键盘输入esc 则触发 退出if (glfwGetKey(window, GLFW_KEY_ESCAPE) GLFW_PRESS) {// 设置 要求退出glfwSetWindowShouldClose(window, true);} } // 逆时针方向绘制 默认情况下逆时针的顶点连接顺序被定义为三角形的正 // 逆时针或顺时针都是相对于观察者方向的 float vertices[] {-0.5f, 0.5f, 0.0f, 1.0f, 0,0, // 左上角 0 0.5f, -0.5f, 0.0f, 0,1.0f,0, // 右下角 10.5f, 0.5f, 0.0f, 0,0,1.0f, // 右上角 2// 第二个三角形//0.5f, -0.5f, 0.0f, // 右下角-0.5f, -0.5f, 0.0f , 1.0f,0,1.0f // 左下角 3//-0.5f, 0.5f, 0.0f // 左上角 }; // 使用索引来减小画点的开销 (未用索引缓冲对象时,每个点都需要画一次(即使重复了)) unsigned int indices[] {0,1,2, //第一个三角形的索引1,3,0 //第二个三角形的索引 }; // 顶点着色器 输出一个变量 给 片段着色器 // out vec4 vertexColor;输出 // in vec4 vertexColor; 输入// 我们可以使用 uniform 给顶点着色器输入变量 从cpu中读取 cpu --gpu const char* vertexShaderSource #version 330 core \n // 0号栏位读取顶点坐标 layout (location 0) in vec3 aPos; \n //1号栏位读取颜色颜色 layout (location 1) in vec3 aColor; out vec4 vertexColor; \n void main() \n { \n// gl_Position 是固定的名称 用来保存 顶点坐标的gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0); \nvertexColor vec4(aColor.x,aColor.y,aColor.z,1.0); \n } \n; const char* fragmentShaderSource #version 330 core \n out vec4 FragColor; \n uniform vec4 outColor; \n in vec4 vertexColor; \n void main() \n { \nFragColor vertexColor; \n } \n;int main() {// 初始化GLFWglfwInit();// 提示 我们使用的版本是3.3// 主版本glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);// 次版本glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);// 简介glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// 创建一个窗口对象GLFWwindow* window glfwCreateWindow(800, 600, Test window, NULL, NULL);if (window NULL) {cout open window failed. endl;// 终止 glfwglfwTerminate();}// 绑定window到上下文对象 创建完窗口我们就可以通知GLFW将我们窗口的上下文设置为当前线程的主上下文了glfwMakeContextCurrent(window);glewExperimental true;// GLEW_OK 0//init GLEWif (glewInit() ! GLEW_OK) {cout glew init failed. endl;// 终止 glfwglfwTerminate();return -1;}// OpenGL渲染窗口的尺寸大小 // glViewport函数前两个参数控制窗口左下角的位置。第三个和第四个参数控制渲染窗口的宽度和高度像素glViewport(0, 0, 800, 600);// 设置剔除 opegl默认正面背面都显示不剔除//glEnable(GL_CULL_FACE);// 剔除背面 GL_BACK 剔除正面 GL_FRONT//glCullFace(GL_BACK);// 线框模式 //第一个参数表示我们打算将其应用到所有的三角形的正面和背面第二个参数告诉我们用线来绘制//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);//VAO对象unsigned int VAO;// 生成一个VAO对象 这个方法可以生成多个 由第一个参数决定glGenVertexArrays(1, VAO);// 绑定 VAOglBindVertexArray(VAO);unsigned int VBO; //如果多个可以用 VBO[]数组 这个方法可以生成多个 由第一个参数决定glGenBuffers(1, VBO);//将新创建的缓冲绑定到 GL_ARRAY_BUFFER目标上glBindBuffer(GL_ARRAY_BUFFER, VBO);// glBufferData 是一个专门用来把用户定义的数据复制到当前绑定缓冲的函数// GL_STATIC_DRAW 数据不会或几乎不会改变。glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);unsigned int EBO;glGenBuffers(1, EBO);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);// 顶点着色器unsigned int vertexShader;// 创建这个着色器vertexShader glCreateShader(GL_VERTEX_SHADER);glShaderSource(vertexShader, 1, vertexShaderSource, NULL);// 编译glCompileShader(vertexShader);// 片段着色器unsigned int fragmentShader;// 创建这个着色器fragmentShader glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, fragmentShaderSource, NULL);// 编译glCompileShader(fragmentShader);// 着色器程序 是将多个着色器合并之后并最终链接完成的版本unsigned int shaderProgram;// 创建一个着色器程序对象shaderProgram glCreateProgram();// 将之前编译的着色器附加到程序对象上glAttachShader(shaderProgram, vertexShader);glAttachShader(shaderProgram, fragmentShader);// 用glLinkProgram链接它们glLinkProgram(shaderProgram);// glVertexAttribPointer函数告诉OpenGL该如何解析顶点数据应用到逐个顶点属性上// 从 0号栏位 开始 将数据每三个为一组 单位为float 每次跳6*float字节 偏移为0glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);// 以顶点属性位置值作为参数启用顶点属性顶点属性默认是禁用的//读取到0号栏位上glEnableVertexAttribArray(0);// 读取颜色属性 从 1号栏位 开始 将数据每三个为一组 单位为float 每次跳6*float字节 偏移为3个floatglVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3*sizeof(float)));// 读取到1号栏位上 glEnableVertexAttribArray(1);//渲染循环 它能在我们让GLFW退出前一直保持运行。下面几行的代码就实现了一个简单的渲染循环//glfwWindowShouldClose 我们每次循环的开始前检查一次GLFW是否被要求退出while (!glfwWindowShouldClose(window)) {//自定义事件 当键盘触发esc 退出processInput(window);glClearColor(0.2, 0.3, 0.3, 1.0);// GL_COLOR_BUFFER_BIT 颜色GL_DEPTH_BUFFER_BIT 深度 和 GL_STENCIL_BUFFER_BIT 模板// 清除前面的那一帧的颜色glClear(GL_COLOR_BUFFER_BIT);// 绑定 VAO glBindVertexArray(VAO);//通过glfwGetTime()获取运行的秒数。//float timeValue glfwGetTime();//然后我们使用sin函数让颜色在0.0到1.0之间改变最后将结果储存到greenValue里。//float greenValue (sin(timeValue) / 2.0f) 0.5f;// 我们用glGetUniformLocation查询uniform ourColor的位置值//int vertexColorlocation glGetUniformLocation(shaderProgram, outColor);// -1表示未找到// 使用着色器程序glUseProgram(shaderProgram);// glUniform4f函数设置uniform值 第一个参数是位置 后面几个是rgb//glUniform4f(vertexColorlocation, 0, greenValue, 0, 1.0f);// 画三角形 从0开始 绘制三个顶点 和VBO的顶点数据通过VAO间接绑定来绘制图元//glDrawArrays(GL_TRIANGLES, 0, 6); 这个是不用索引画的glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);//可以不需要这个 绑定VAO的同时也会自动绑定EBO//glDrawElements函数从当前绑定到GL_ELEMENT_ARRAY_BUFFER目标的EBO中获取索引glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);//解绑VAOglBindVertexArray(0);glfwSwapBuffers(window);glfwPollEvents();}// 最后终止 glfwglfwTerminate();return 0; }uniform Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式但uniform和顶点属性有些不同。首先uniform是全局的(Global)。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的而且它可以被着色器程序的任意着色器在任意阶段访问。第二无论你把uniform值设置成什么uniform会一直保存它们的数据直到它们被重置或更新。 下面是使用uniform向着色器赋值 //通过glfwGetTime()获取运行的秒数。 float timeValue glfwGetTime(); //然后我们使用sin函数让颜色在0.0到1.0之间改变最后将结果储存到greenValue里。 float greenValue (sin(timeValue) / 2.0f) 0.5f; // 我们用glGetUniformLocation查询uniform ourColor的位置值 int vertexColorlocation glGetUniformLocation(shaderProgram, outColor);// -1表示未找到 // 使用着色器程序 glUseProgram(shaderProgram); // glUniform4f函数设置uniform值 第一个参数是位置 后面几个是rgb glUniform4f(vertexColorlocation, 0, greenValue, 0, 1.0f);
http://www.zqtcl.cn/news/208987/

相关文章:

  • 微信网站怎么做下载附件wordpress 代码执行
  • 5050众筹网站开发福州餐饮网站建设
  • 北京国家建设部网站网站备案需要去哪里
  • 廊坊哪里能够做网站网站改版影响
  • 比较好的源码网站手机网站支付如何制作
  • 深圳做网站哪个公司好重庆工程造价信息2021
  • 做电商宠物带哪个网站最好最近一周的重大新闻
  • 做网站难度李沧网站建设电话
  • 六安建设网站网站图片最大尺寸是多少
  • 手机建网站步骤软件优速网站建设
  • 导购网站如何做免费推广用wordpress开发网站模板
  • 建立网站 英语wordpress字体加载
  • 株洲网站建设和制作wordpress 瑞课教育
  • 网站开发培训什么淘宝客网站备案
  • 提供网站制作公司用虚拟机做服务器搭建网站
  • 做煤层气的网站仅对wordpress自带主题有效
  • 优化网站关键词排名东莞网站设计报价
  • 建设厅网站总经济师是干什么的网络运营商电话
  • mvc5 网站开发之美专业企业建站价格
  • 水果电子商务网站建设规划书ipad做网站服务器
  • 网站模版自适应安卓软件开发培训
  • 网络网站建设10大指标开店装修话做那个网站找工人
  • dedecms网站的下载济南网站忧化
  • 深圳北站设计者亚洲国产中文域名查询
  • 有好的学网站建设的书吗龙岗网站建设服务
  • 建个注册页面网站做网站坚持多少年会有起色
  • 做网站是什么职位工商局网站查询入口
  • 做腰椎核磁证网站是 收 七如何做个盈利的网站
  • wordpress查看站点购物网站的后台做哪些东西
  • 文化馆为何需要建设自己的网站网站的建设教程