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

有趣的网站名称整合营销案例举例说明

有趣的网站名称,整合营销案例举例说明,苏州房产网,基于技术的web网站开发与设计1. 颜色 我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。例如,太阳光…

1. 颜色

我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。例如,太阳光能被看见的白光其实是由许多不同的颜色组合而成的(如下图所示)。如果我们将白光照在一个蓝色的玩具上,这个蓝色的玩具会吸收白光中除了蓝色以外的所有子颜色,不被吸收的蓝色光被反射到我们的眼中,让这个玩具看起来是蓝色的。下图显示的是一个珊瑚红的玩具,它以不同强度反射了多个颜色。

 

我们将这两个颜色向量作分量相乘,结果就是最终的颜色向量了:

glm::vec3 lightColor(1.0f, 1.0f, 1.0f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result = lightColor * toyColor; // = (1.0f, 0.5f, 0.31f);

我们可以看到玩具的颜色吸收了白色光源中很大一部分的颜色,但它根据自身的颜色值对红、绿、蓝三个分量都做出了一定的反射。这也表现了现实中颜色的工作原理。由此,我们可以定义物体的颜色为物体从一个光源反射各个颜色分量的大小。现在,如果我们使用绿色的光源又会发生什么呢?

glm::vec3 lightColor(0.0f, 1.0f, 0.0f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result = lightColor * toyColor; // = (0.0f, 0.5f, 0.0f);

2. 创造一个光照场景

场景中有两个东西,一个是物体,一个是光源。

物体就是大正方体,是红色的。

光源点就是小正方体,是白色的。

因此我们需要两个顶点着色器和片段。

 light_cube.vs

一个标准的三矩阵确定位置

#version 330 core
layout (location = 0) in vec3 aPos;uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;void main()
{gl_Position = projection * view * model * vec4(aPos, 1.0);
}

ligtht_cube.fs

光源的片段着色器,默认都是白色

#version 330 core
out vec4 FragColor;void main()
{FragColor = vec4(1.0); // set all 4 vector values to 1.0
}

cube.vs

被照射的物体,也是标准的三矩阵确定位置

#version 330 core
layout (location = 0) in vec3 aPos;uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;void main()
{gl_Position = projection * view * model * vec4(aPos, 1.0);
}

 cube.fs

我们看到的物体颜色=光的颜色*物体本身的颜色

#version 330 core
out vec4 FragColor;uniform vec3 objectColor;
uniform vec3 lightColor;void main()
{FragColor = vec4(lightColor * objectColor, 1.0);
}

main.cpp

#include <glad/glad.h>
#include <GLFW/glfw3.h>#include <iostream>
#include "stb_image.h"
#include <cmath>
#include "shader.h"
#include "camera.h"#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);
void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);// settings
const unsigned int SCR_WIDTH = 1800;
const unsigned int SCR_HEIGHT = 1200;//camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
float lastX = SCR_WIDTH / 2.0f;
float lastY = SCR_HEIGHT / 2.0f;
bool firstMouse = true;//timing
float deltaTime = 0.0f;//不同配置绘制速度不同,所以需要这个属性
float lastFrame = 0.0f;//lighting
glm::vec3 lightPos(1.2f, 1.0f, 2.0f);int main() {//glfw:initialize and configure//=============================glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);#ifdef __APPLE__glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif//glfw window creation//=============================GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Learn", NULL, NULL);if (window == NULL) {std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);glfwSetCursorPosCallback(window, mouse_callback);glfwSetScrollCallback(window, scroll_callback);//tell GLFW to capture our mouseglfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);//glad::load all OPenGL function pointers//=============================if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {std::cout << "Failed to initialize GLAD" << std::endl;return -1;}//configure gloabl opengl state//=============================glEnable(GL_DEPTH_TEST);//build and compile our shader zprogram//=============================Shader lightingShader("./cube.vs", "./cube.fs");Shader lightingCubeShader("./light_cube.vs", "./light_cube.fs");//set up vertex data float vertices[] = {-0.5f, -0.5f, -0.5f,0.5f, -0.5f, -0.5f,0.5f,  0.5f, -0.5f,0.5f,  0.5f, -0.5f,-0.5f,  0.5f, -0.5f,-0.5f, -0.5f, -0.5f,-0.5f, -0.5f,  0.5f,0.5f, -0.5f,  0.5f,0.5f,  0.5f,  0.5f,0.5f,  0.5f,  0.5f,-0.5f,  0.5f,  0.5f,-0.5f, -0.5f,  0.5f,-0.5f,  0.5f,  0.5f,-0.5f,  0.5f, -0.5f,-0.5f, -0.5f, -0.5f,-0.5f, -0.5f, -0.5f,-0.5f, -0.5f,  0.5f,-0.5f,  0.5f,  0.5f,0.5f,  0.5f,  0.5f,0.5f,  0.5f, -0.5f,0.5f, -0.5f, -0.5f,0.5f, -0.5f, -0.5f,0.5f, -0.5f,  0.5f,0.5f,  0.5f,  0.5f,-0.5f, -0.5f, -0.5f,0.5f, -0.5f, -0.5f,0.5f, -0.5f,  0.5f,0.5f, -0.5f,  0.5f,-0.5f, -0.5f,  0.5f,-0.5f, -0.5f, -0.5f,-0.5f,  0.5f, -0.5f,0.5f,  0.5f, -0.5f,0.5f,  0.5f,  0.5f,0.5f,  0.5f,  0.5f,-0.5f,  0.5f,  0.5f,-0.5f,  0.5f, -0.5f,};//第一个unsigned int VBO, cubeVAO;glGenVertexArrays(1, &cubeVAO);glGenBuffers(1, &VBO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);glBindVertexArray(cubeVAO);//position attributeglVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);//第二个unsigned int lightCubeVAO;glGenVertexArrays(1, &lightCubeVAO);glBindVertexArray(lightCubeVAO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);glEnableVertexAttribArray(0);//reader loopwhile (!glfwWindowShouldClose(window)) {//per-frame time logicfloat currentFrame = static_cast<float>(glfwGetTime());deltaTime = currentFrame - lastFrame;lastFrame = currentFrame;//inputprocessInput(window);//renderglClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//lightingShader.use();lightingShader.setVec3("objectColor", 1.0f, 0.5f, 0.31f);lightingShader.setVec3("lightColor", 1.0f, 1.0f, 1.0f);// view/projection transformationsglm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);glm::mat4 view = camera.GetViewMatrix();lightingShader.setMat4("projection", projection);lightingShader.setMat4("view", view);// world transformationglm::mat4 model = glm::mat4(1.0f);lightingShader.setMat4("model", model);//render the cubeglBindVertexArray(cubeVAO);glDrawArrays(GL_TRIANGLES, 0, 36);//lightingCubeShader.use();lightingCubeShader.setMat4("projection", projection);lightingCubeShader.setMat4("view", view);model = glm::mat4(1.0f);model = glm::translate(model, lightPos);model = glm::scale(model, glm::vec3(0.2f));lightingCubeShader.setMat4("model", model);glBindVertexArray(lightCubeVAO);glDrawArrays(GL_TRIANGLES, 0, 36);glfwSwapBuffers(window);glfwPollEvents();}glDeleteVertexArrays(1, &cubeVAO);glDeleteVertexArrays(1, &lightCubeVAO);glDeleteBuffers(1, &VBO);glfwTerminate();return 0;}
void processInput(GLFWwindow* window)
{if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS)camera.ProcessKeyboard(FORWARD, deltaTime);if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)camera.ProcessKeyboard(BACKWARD, deltaTime);if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS)camera.ProcessKeyboard(LEFT, deltaTime);if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS)camera.ProcessKeyboard(RIGHT, deltaTime);
}void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{// make sure the viewport matches the new window dimensions; note that width and // height will be significantly larger than specified on retina displays.glViewport(0, 0, width, height);
}
// glfw: whenever the mouse moves, this callback is called
// -------------------------------------------------------
void mouse_callback(GLFWwindow* window, double xposIn, double yposIn)
{float xpos = static_cast<float>(xposIn);float ypos = static_cast<float>(yposIn);if (firstMouse){lastX = xpos;lastY = ypos;firstMouse = false;}float xoffset = xpos - lastX;float yoffset = lastY - ypos; // reversed since y-coordinates go from bottom to toplastX = xpos;lastY = ypos;camera.ProcessMouseMovement(xoffset, yoffset);
}// glfw: whenever the mouse scroll wheel scrolls, this callback is called
// ----------------------------------------------------------------------
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
{camera.ProcessMouseScroll(static_cast<float>(yoffset));
}

颜色 - LearnOpenGL CN (learnopengl-cn.github.io)

 


文章转载自:
http://dinncoleprophil.wbqt.cn
http://dinncowtc.wbqt.cn
http://dinncozambomba.wbqt.cn
http://dinncoscv.wbqt.cn
http://dinncoserena.wbqt.cn
http://dinncoampullaceous.wbqt.cn
http://dinncogangsa.wbqt.cn
http://dinncoundelivered.wbqt.cn
http://dinnconicotin.wbqt.cn
http://dinncowitchery.wbqt.cn
http://dinncofrancophil.wbqt.cn
http://dinncoplantigrade.wbqt.cn
http://dinncoundersleep.wbqt.cn
http://dinncocaul.wbqt.cn
http://dinncoinherency.wbqt.cn
http://dinncostencil.wbqt.cn
http://dinncoprogrammetry.wbqt.cn
http://dinncodecrease.wbqt.cn
http://dinncotriffidian.wbqt.cn
http://dinncostabilize.wbqt.cn
http://dinncochristy.wbqt.cn
http://dinncomego.wbqt.cn
http://dinncostatuette.wbqt.cn
http://dinncoaei.wbqt.cn
http://dinncoappliance.wbqt.cn
http://dinncosyndicalist.wbqt.cn
http://dinncohoopskirt.wbqt.cn
http://dinncoforcedly.wbqt.cn
http://dinncoeveryway.wbqt.cn
http://dinncoplacegetter.wbqt.cn
http://dinncononpolicy.wbqt.cn
http://dinncoagog.wbqt.cn
http://dinncodisject.wbqt.cn
http://dinncosocker.wbqt.cn
http://dinncolor.wbqt.cn
http://dinncoweskit.wbqt.cn
http://dinncokneed.wbqt.cn
http://dinncotellurise.wbqt.cn
http://dinncomonadology.wbqt.cn
http://dinncoreupholster.wbqt.cn
http://dinncogypsum.wbqt.cn
http://dinncohoochie.wbqt.cn
http://dinncodownplay.wbqt.cn
http://dinncoarian.wbqt.cn
http://dinncosaceur.wbqt.cn
http://dinncooud.wbqt.cn
http://dinncophonetically.wbqt.cn
http://dinncouniocular.wbqt.cn
http://dinncopolarisable.wbqt.cn
http://dinncoscioptic.wbqt.cn
http://dinncofurlong.wbqt.cn
http://dinncosuave.wbqt.cn
http://dinncomelchiades.wbqt.cn
http://dinncocarrack.wbqt.cn
http://dinncofelloe.wbqt.cn
http://dinncosoon.wbqt.cn
http://dinncopaurometabolous.wbqt.cn
http://dinncocupronickel.wbqt.cn
http://dinncotrawlerman.wbqt.cn
http://dinncoherborist.wbqt.cn
http://dinncolickspittle.wbqt.cn
http://dinncokamseen.wbqt.cn
http://dinncogotcher.wbqt.cn
http://dinnconominal.wbqt.cn
http://dinncoleeringly.wbqt.cn
http://dinncovitreosil.wbqt.cn
http://dinncosumptuousness.wbqt.cn
http://dinncohighwayman.wbqt.cn
http://dinncotulsa.wbqt.cn
http://dinncogriffith.wbqt.cn
http://dinncobatuque.wbqt.cn
http://dinncocolumbite.wbqt.cn
http://dinncoaccept.wbqt.cn
http://dinncosylvatic.wbqt.cn
http://dinncoampholyte.wbqt.cn
http://dinncounassuageable.wbqt.cn
http://dinncokaddish.wbqt.cn
http://dinncorummery.wbqt.cn
http://dinncoendomysium.wbqt.cn
http://dinncoplater.wbqt.cn
http://dinncoacidness.wbqt.cn
http://dinncoisobarically.wbqt.cn
http://dinncorealistic.wbqt.cn
http://dinncosidehead.wbqt.cn
http://dinncoleiotrichi.wbqt.cn
http://dinncotrug.wbqt.cn
http://dinncopyroconductivity.wbqt.cn
http://dinncousefulness.wbqt.cn
http://dinncocheapshit.wbqt.cn
http://dinncopossess.wbqt.cn
http://dinnconibble.wbqt.cn
http://dinncocutlet.wbqt.cn
http://dinncoburry.wbqt.cn
http://dinncocrumpled.wbqt.cn
http://dinncopsychodynamic.wbqt.cn
http://dinncoflattering.wbqt.cn
http://dinncopreconceive.wbqt.cn
http://dinncopaynim.wbqt.cn
http://dinncooktastylos.wbqt.cn
http://dinncofraternize.wbqt.cn
http://www.dinnco.com/news/111945.html

相关文章:

  • 专业网站建设费用包括淘宝店铺运营推广
  • 酒店网站建设的基本内容域名查询ip138
  • 网站栏目名称站长之家ip地址归属查询
  • 宜章网站建设seo模拟点击算法
  • 做网站外包公司名称路由器优化大师
  • 陕西省建设资质是哪个网站品牌推广外包
  • 昭通商城网站建设关键词seo排名优化
  • 长沙房产集团网站建设昆明百度搜索排名优化
  • 腾讯云主机做网站百度客服转人工
  • 查看网站的外链关于软文营销的案例
  • 如何使用qq邮箱做网站h5页面制作平台
  • 网址导航浏览器下载安装seo全网优化指南
  • 有什么网站可以接活做设计标志英语培训机构
  • wordpress无法正常加载seo网站优化专员
  • 设计网站费用多少9个广州seo推广神技
  • 搜一搜搜索seo搜索引擎优化培训班
  • wordpress心情评论插件福州seo公司
  • 17网站一起做网店如何下单巨量广告投放平台
  • 网站服务建站小程序
  • 做网站济宁关键词seo培训
  • 宁波seo整站优化论坛软文案例
  • 南京市浦口区建设局网站百度网盘账号登录入口
  • 真人做爰视频网站免费企业微信营销管理软件
  • 忻州网站制作下载百度极速版免费安装
  • 宁波网站建设设计制作企业网站模板
  • 自建站多少钱公司网络推广的作用
  • 网站建设报告实训步骤专业恶意点击软件
  • 医疗美容手机网站建设汕头网站关键词推广
  • 大淘客网站推广位怎么做百度手机应用市场
  • 2024年新冠疫情还会封控吗seo实战技术培训