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

北京做网站的工作室电脑网站进不去网页怎么办

北京做网站的工作室,电脑网站进不去网页怎么办,局部翻新装修公司,网络公司网站开发GLM简单使用 glm是一个开源的对矩阵运算的库#xff0c;下载地址#xff1a; https://github.com/g-truc/glm/releases 直接包含其头文件即可使用#xff1a; #include glad/glad.h//glad必须在glfw头文件之前包含 #include GLFW/glfw3.h #include io…GLM简单使用 glm是一个开源的对矩阵运算的库下载地址 https://github.com/g-truc/glm/releases 直接包含其头文件即可使用 #include glad/glad.h//glad必须在glfw头文件之前包含 #include GLFW/glfw3.h #include iostream #define STB_IMAGE_IMPLEMENTATION #include stb_image.h//GLM #include glm/glm.hpp #include glm/gtc/matrix_transform.hpp #include glm/gtc/type_ptr.hpp #define GLM_ENABLE_EXPERIMENTAL #include glm/gtx/string_cast.hppvoid frameBufferSizeCallbakc(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height); } void glfwKeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { }GLuint program 0; GLuint vao 0; GLuint texture 0; glm::mat4 transform(1.0f);//4×4单位矩阵 //旋转 void doRotationTransform() {//构建一个旋转矩阵绕着z轴旋转45度角//rotate函数用于生成旋转矩阵//bug1:rotate必须得到一个float类型的角度c的template//bug2:rotate函数接受的不是角度degree接收的弧度radians//注意点radians函数也是模板函数切记要传入float类型数据加f后缀transform glm::rotate(glm::mat4(1.0), glm::radians(90.f), glm::vec3(0.0, 0.0, 1.0)); } //平移 void doTranslationTransform() {transform glm::translate(glm::mat4(1.0), glm::vec3(0.5f, 0.0, 0.0)); } //缩放 void doScaleTransform() {//x缩放0.1y缩放0.5z不缩放transform glm::scale(glm::mat4(1.0), glm::vec3(0.1f, 0.5f, 1.0f)); } //复合变换 void doTransform() {glm::mat4 rotateMat glm::rotate(glm::mat4(1.0f), glm::radians(90.0f), glm::vec3(0.0, 0.0, 1.0));glm::mat4 translateMat glm::translate(glm::mat4(1.0f), glm::vec3(0.5f, 0.0f, 0.0f));//先旋转 再平移transform translateMat * rotateMat;//先平移 后旋转//transform rotateMat * translateMat; } float angle 0.0f; void doRotation() {angle 2.0f;//每一帧都会“重新”构建一个旋转矩阵transform glm::rotate(glm::mat4(1.0f), glm::radians(angle), glm::vec3(0.0f, 0.0f, 1.0f));; } void prepareVAO() {//positionsfloat positions[] {-0.5f, -0.5f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, 0.5f, 0.0f,};//颜色float colors[] {1.0f, 0.0f,0.0f,0.0f, 1.0f,0.0f,0.0f, 0.0f,1.0f};//索引unsigned int indices[] {0, 1, 2,};//uv坐标float uvs[] {0.0f, 0.0f,1.0f, 0.0f,0.5f, 1.0f,};//2 VBO创建GLuint posVbo 0;GLuint colorVbo 0;GLuint uvVbo 0;glGenBuffers(1, posVbo);glBindBuffer(GL_ARRAY_BUFFER, posVbo);glBufferData(GL_ARRAY_BUFFER, sizeof(positions), positions, GL_STATIC_DRAW);glGenBuffers(1, colorVbo);glBindBuffer(GL_ARRAY_BUFFER, colorVbo);glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);glGenBuffers(1, uvVbo);glBindBuffer(GL_ARRAY_BUFFER, uvVbo);glBufferData(GL_ARRAY_BUFFER, sizeof(uvs), uvs, GL_STATIC_DRAW);//3 EBO创建GLuint ebo 0;glGenBuffers(1, ebo);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);//4 VAO创建vao 0;glGenVertexArrays(1, vao);glBindVertexArray(vao);//5 绑定vbo ebo 加入属性描述信息//5.1 加入位置属性描述信息glBindBuffer(GL_ARRAY_BUFFER, posVbo);glEnableVertexAttribArray(0);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);//5.2 加入颜色属性描述信息glBindBuffer(GL_ARRAY_BUFFER, colorVbo);glEnableVertexAttribArray(1);glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);//5.3 加入uv属性描述数据glBindBuffer(GL_ARRAY_BUFFER, uvVbo);glEnableVertexAttribArray(2);glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (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;\nlayout (location 1) in vec3 aColor;\nlayout (location 2) in vec2 aUV;\nout vec3 color;\nout vec2 uv;\nuniform mat4 transform;\nvoid main()\n{\n vec4 position vec4(aPos, 1.0);\n position transform * position;\n gl_Position position;\n color aColor;\n uv aUV;\n}\0;const char* fragmentShaderSource #version 330 core\nout vec4 FragColor;\nin vec3 color;\nin vec2 uv;\nuniform sampler2D sampler;\nvoid main()\n{\n FragColor texture(sampler, uv);\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 prepareTextrue() {//1 stbImage 读取图片int width, height, channels;//--反转y轴stbi_set_flip_vertically_on_load(true);unsigned char* data stbi_load(goku.jpg, width, height, channels, STBI_rgb_alpha);//2 生成纹理并且激活单元绑定glGenTextures(1, texture);//--激活纹理单元--glActiveTexture(GL_TEXTURE0);//--绑定纹理对象--glBindTexture(GL_TEXTURE_2D, texture);//3 传输纹理数据,开辟显存glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);//***释放数据stbi_image_free(data);//4 设置纹理的过滤方式glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);//5 设置纹理的包裹方式glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);//uglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);//v }void render() {//执行opengl画布清理操作glClear(GL_COLOR_BUFFER_BIT);//1.绑定当前的programglUseProgram(program);//2 更新Uniform的时候一定要先UserProgram//2.1 通过名称拿到Uniform变量的位置LocationGLint location glGetUniformLocation(program, sampler);//2.2 通过Location更新Uniform变量的值glUniform1f(location, 0);GLint locationTransform glGetUniformLocation(program, transform);//transpose参数表示是否对传输进去的矩阵数据进行转置glUniformMatrix4fv(locationTransform, 1, GL_FALSE, glm::value_ptr(transform));//3 绑定当前的vaoglBindVertexArray(vao);//4 发出绘制指令//glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0); }int main() {//初始化glfw环境glfwInit();//设置opengl主版本号glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//设置opengl次版本号glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//设置opengl启用核心模式glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//创建窗体对象GLFWwindow* window glfwCreateWindow(800, 600, lenarnOpenGL, nullptr, nullptr);//设置当前窗体对象为opengl的绘制舞台glfwMakeContextCurrent(window);//窗体大小回调glfwSetFramebufferSizeCallback(window, frameBufferSizeCallbakc);//键盘相应回调glfwSetKeyCallback(window, glfwKeyCallback);//使用glad加载所有当前版本opengl的函数if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){std::cout 初始化glad失败 std::endl;return -1;};//设置opengl视口大小和清理颜色glViewport(0, 0, 800, 600);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//shaderprepareShader();//vaoprepareVAO();//textureprepareTextrue();//doTransform();//执行窗体循环while (!glfwWindowShouldClose(window)){//接受并分发窗体消息//检查消息队列是否有需要处理的鼠标、键盘等消息//如果有的话就将消息批量处理清空队列glfwPollEvents();doRotation();//渲染操作render();//切换双缓存glfwSwapBuffers(window);}//推出程序前做相关清理glfwTerminate();return 0; }上述代码分别实现了对图像进行旋转平移缩放的操作。 在VS中定义transform四维矩阵变量将这个变量与位置向量进行相乘即可进行旋转平移缩放。 叠加变换 上面的旋转三角形可以通过叠加来实现 void doTransform() {旋转三角形float angle 1.0f;transform glm::rotate(transform, glm::radians(angle), glm::vec3(0.0f, 0.0f, 1.0f)); }在每一帧进行渲染时调用此函数即可
http://www.dnsts.com.cn/news/4839.html

相关文章:

  • 外贸网站源码去一品资源dw网站制作手机软件下载
  • 怎么制作网站记事本商丘网红排行榜
  • 深圳电商网站开发网站后台管理系统是什么
  • 石家庄有哪些做网站的公司设计专业所需网站
  • 网站的建设属于无形资产吗卖服装设计稿的平台
  • 自己做网站到哪里去接广告网站 开发 工具
  • 电商网站建设布局策划案模板范文
  • 邵阳建网站多少钱wordpress简明教程
  • 爱站工具包手机版可以做词云的网站
  • 青海省建设厅勘察设计备案网站客源软件哪个最好
  • 做网站建设的方案网站的图文链接怎么做
  • 网站如何用微信支付云梦网站怎么做浮窗
  • 政务网站建设及安全河南那家做网站实力强
  • 网站开发源代码修改济南哪个网络公司建网站好
  • 国外网站做任务套利辽宁城乡建设工程招标网
  • 站长网站建设网站空间和域名区别
  • wordpress站群主机品牌整合营销机构
  • 网站业务功能设计做网站前台要学什么课程
  • flash 网站欣赏wordpress分类目录模板
  • 推荐电商网站建设拼多多网店怎么开
  • 做网站的公司找客户唯美网站建设
  • muse做的网站怎么样asp网站仿制
  • 如何注册公司网站免费注册婚纱网站手机网站
  • 望京做网站wordpress+国内不使用
  • 教育门户网站建设用户中心wordpress
  • 东山网站建设godaddy做网站
  • 我的三次做网站的经历生成关键词的软件
  • 太原网站建设山西悉云科技智能建站系统免费版
  • 建立网站怎么赚钱wordpress 允许函数
  • 百度营销-网站分析培训阿里网站备案寄材料