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

电子商务和网站开发 职务轻淘客网站怎么做

电子商务和网站开发 职务,轻淘客网站怎么做,河北建造师网,机械设备公司网站制作OpenGL着色器实现纹理合并显示 本文介绍了opengl下实现纹理的装载#xff0c;同时借助顶点着色器和片源着色器实现两个不同外部纹理的合并显示。 目录 1 opengl下纹理的装载2 纹理合并效果显示3 完整的代码 1 opengl下纹理的装载 // 初始化GLFWif (!glfwInit()) {std::cerr …   OpenGL着色器实现纹理合并显示 本文介绍了opengl下实现纹理的装载同时借助顶点着色器和片源着色器实现两个不同外部纹理的合并显示。 目录 1 opengl下纹理的装载2 纹理合并效果显示3 完整的代码 1 opengl下纹理的装载 // 初始化GLFWif (!glfwInit()) {std::cerr Failed to initialize GLFW std::endl;return -1;}// 创建窗口GLFWwindow* window glfwCreateWindow(800, 600, Multiple Textures Example, NULL, NULL);if (!window) {std::cerr Failed to create GLFW window std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);// 初始化GLEWif (glewInit() ! GLEW_OK) {std::cerr Failed to initialize GLEW std::endl;return -1;}// 编译顶点着色器GLuint vertexShader glCreateShader(GL_VERTEX_SHADER);glShaderSource(vertexShader, 1, vertexShaderSource, NULL);glCompileShader(vertexShader);// 编译片元着色器GLuint fragmentShader glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, fragmentShaderSource, NULL);glCompileShader(fragmentShader);// 创建着色器程序GLuint shaderProgram glCreateProgram();glAttachShader(shaderProgram, vertexShader);glAttachShader(shaderProgram, fragmentShader);glLinkProgram(shaderProgram);glUseProgram(shaderProgram);// 加载纹理1GLuint textureID1 SOIL_load_OGL_texture(1.jpg, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y);glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, textureID1);glUniform1i(glGetUniformLocation(shaderProgram, texture1), 0);// 加载纹理2GLuint textureID2 SOIL_load_OGL_texture(2.jpg, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, textureID2);glUniform1i(glGetUniformLocation(shaderProgram, texture2), 1); 借助glfw实现窗口的创建借助SOIL库实现纹理的装载返回加载后的纹理id。 2 纹理合并效果显示 // 设置顶点数据和纹理坐标float vertices[] {// 位置 // 纹理坐标-1.0f, -1.0f, 0.0f, 0.0f, 0.0f,1.0f, -1.0f, 0.0f, 1.0f, 0.0f,1.0f, 1.0f, 0.0f, 1.0f, 1.0f,- 1.0f, -1.0f, 0.0f, 0.0f, 0.0f,1.0f, 1.0f, 0.0f, 1.0f, 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f};// 创建顶点缓冲对象和顶点数组对象unsigned int VBO, VAO;glGenVertexArrays(1, VAO);glGenBuffers(1, VBO);glBindVertexArray(VAO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 设置顶点属性指针glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));glEnableVertexAttribArray(1);// 渲染循环while (!glfwWindowShouldClose(window)) {glClear(GL_COLOR_BUFFER_BIT);// 绑定纹理并绘制glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, textureID1);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, textureID2);glBindVertexArray(VAO);glDrawArrays(GL_TRIANGLES, 0, 6);glfwSwapBuffers(window);glfwPollEvents();}// 清理资源glDeleteTextures(1, textureID1);glDeleteTextures(1, textureID2);glDeleteProgram(shaderProgram);glDeleteShader(vertexShader);glDeleteShader(fragmentShader);glfwTerminate(); 绘制两个三角形并绑定两个纹理。添加顶点着色器和片元着色器其代码如下 const char* vertexShaderSource R( #version 330 corelayout(location 0) in vec3 position; layout(location 1) in vec2 texCoord;out vec2 fragTexCoord;void main() {fragTexCoord texCoord;gl_Position vec4(position, 1.0); } );const char* fragmentShaderSource R( #version 330 corein vec2 fragTexCoord; out vec4 fragColor;uniform sampler2D texture1; uniform sampler2D texture2;void main() {vec4 color1 texture(texture1, fragTexCoord);vec4 color2 texture(texture2, fragTexCoord);// 将两个纹理的颜色进行混合fragColor mix(color1, color2, 0.5); } ); 3 完整的代码 完整的代码如下所示需依赖glfw实现窗口显示依赖SOIL实现纹理装载。需将两个纹理路径换为本地路径给出的示例代码路径为1.jpg和2.jpg。 #include GL/glew.h #include GLFW/glfw3.h #include SOIL/SOIL.h #include iostreamconst char* vertexShaderSource R( #version 330 corelayout(location 0) in vec3 position; layout(location 1) in vec2 texCoord;out vec2 fragTexCoord;void main() {fragTexCoord texCoord;gl_Position vec4(position, 1.0); } );const char* fragmentShaderSource R( #version 330 corein vec2 fragTexCoord; out vec4 fragColor;uniform sampler2D texture1; uniform sampler2D texture2;void main() {vec4 color1 texture(texture1, fragTexCoord);vec4 color2 texture(texture2, fragTexCoord);// 将两个纹理的颜色进行混合fragColor mix(color1, color2, 0.5); } );int main() {// 初始化GLFWif (!glfwInit()) {std::cerr Failed to initialize GLFW std::endl;return -1;}// 创建窗口GLFWwindow* window glfwCreateWindow(800, 600, Multiple Textures Example, NULL, NULL);if (!window) {std::cerr Failed to create GLFW window std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);// 初始化GLEWif (glewInit() ! GLEW_OK) {std::cerr Failed to initialize GLEW std::endl;return -1;}// 编译顶点着色器GLuint vertexShader glCreateShader(GL_VERTEX_SHADER);glShaderSource(vertexShader, 1, vertexShaderSource, NULL);glCompileShader(vertexShader);// 编译片元着色器GLuint fragmentShader glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, fragmentShaderSource, NULL);glCompileShader(fragmentShader);// 创建着色器程序GLuint shaderProgram glCreateProgram();glAttachShader(shaderProgram, vertexShader);glAttachShader(shaderProgram, fragmentShader);glLinkProgram(shaderProgram);glUseProgram(shaderProgram);// 加载纹理1GLuint textureID1 SOIL_load_OGL_texture(1.jpg, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y);glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, textureID1);glUniform1i(glGetUniformLocation(shaderProgram, texture1), 0);// 加载纹理2GLuint textureID2 SOIL_load_OGL_texture(2.jpg, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, textureID2);glUniform1i(glGetUniformLocation(shaderProgram, texture2), 1);// 设置顶点数据和纹理坐标float vertices[] {// 位置 // 纹理坐标-1.0f, -1.0f, 0.0f, 0.0f, 0.0f,1.0f, -1.0f, 0.0f, 1.0f, 0.0f,1.0f, 1.0f, 0.0f, 1.0f, 1.0f,- 1.0f, -1.0f, 0.0f, 0.0f, 0.0f,1.0f, 1.0f, 0.0f, 1.0f, 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f};// 创建顶点缓冲对象和顶点数组对象unsigned int VBO, VAO;glGenVertexArrays(1, VAO);glGenBuffers(1, VBO);glBindVertexArray(VAO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 设置顶点属性指针glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));glEnableVertexAttribArray(1);// 渲染循环while (!glfwWindowShouldClose(window)) {glClear(GL_COLOR_BUFFER_BIT);// 绑定纹理并绘制glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, textureID1);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, textureID2);glBindVertexArray(VAO);glDrawArrays(GL_TRIANGLES, 0, 6);glfwSwapBuffers(window);glfwPollEvents();}// 清理资源glDeleteTextures(1, textureID1);glDeleteTextures(1, textureID2);glDeleteProgram(shaderProgram);glDeleteShader(vertexShader);glDeleteShader(fragmentShader);glfwTerminate();return 0; }
http://www.pierceye.com/news/88843/

相关文章:

  • 如何策划一个网站dw软件代码大全
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站新媒体代运营
  • 网站建设绵阳辉煌电商在线网络培训平台
  • 不想网站备案如何办一念天堂免费观看
  • 网站的用户体验怎么做5个搜索引擎作弊的网站
  • 怎么在手机上建网站苏州网站搜索引擎优化
  • 直接进入网站的代码网站建设是要考虑什么东西
  • 网站建设续费合同广州建设工程交易中心怎么样
  • 凡科建站如何制作论坛西双版纳住房和城乡建设局网站
  • 西安网站设设哈尔滨做网站哪里好
  • 百度联盟网站怎么做app软件商店
  • 西安网站制作公司排名什么网站可以做宣传
  • 怎么在360做网站建设网站个人网上银行
  • 教育网站制作多少费用河北seo技术培训
  • 佛山市品牌网站建设哪家好wordpress本地路径
  • 网站设计能出来什么wordpress 商城 插件
  • 东营建设局网站企业邮箱地址怎么填
  • 中国建设银行官网站e路护航下载宝塔搭建wordpress
  • 网站变量网站后台系统
  • 建立企业网站的目的和意义合肥网站开发招聘
  • 农八师建设兵团社保网站深圳包装设计招聘
  • 做微商做什么网站比较好广州服装设计公司排行
  • 个人可以做导航网站吗网站友情链接 关键词经常改动
  • 慈溪专业做网站公司开发小程序需要的技术
  • 国外网站的设计风格企业网站建立之前必须首先确定
  • 宣武成都网站建设0基础做网站多久
  • 360免费视频网站建设微信小程序用什么开发
  • 网站无后台可以上框架电商网站设计平台
  • 动态asp.net网站开发制作人
  • 网站模板建设报价单网站前端工程师