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

网站建设推广小王熊掌号海沧建设网站多少钱

网站建设推广小王熊掌号,海沧建设网站多少钱,兑换网站建设,学校网站规划1. 颜色 我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色#xff0c;而是它所反射的(Reflected)颜色。换句话说#xff0c;那些不能被物体所吸收(Absorb)的颜色#xff08;被拒绝的颜色#xff09;就是我们能够感知到的物体的颜色。例如#xff0c;太阳光…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.hppvoid 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_castfloat(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_castfloat(xposIn);float ypos static_castfloat(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_castfloat(yoffset)); } 颜色 - LearnOpenGL CN (learnopengl-cn.github.io)
http://www.zqtcl.cn/news/14358/

相关文章:

  • 漯河市住房和乡镇建设局官方网站简洁大气企业网站源码 后台
  • 沧浪手机网站建设方案泉州网站建设制作
  • 做网站盐城苏州街网站建设
  • 上海做网站就用乐云seo深圳网络营销怎么推广
  • 办公用品网站模板什么网站做家具出口
  • 网站备案密码找回应用公园怎么样
  • 菏泽哪里做网站域名解析服务器ip地址
  • 0791网站建设免费个人网站建站源码
  • 浙江网站建设dyfwzx平面设计接单能赚多少钱
  • 情侣做记录网站源码wordpress5安装
  • 商务网站建设策划思路自己做购物网站好吗
  • python开发做网站教育网络系统管理
  • 可以直接进入网站的正能量连接夸克免费空间
  • 保险代理人做网站建筑公司网站怎么设计
  • 网站优化排名提升wordpress多城市seo
  • 个人网站做项目常州 网站制作
  • 郑州腾讯网站建设临夏网站建设
  • wordpress 首页留言板南京seo网络优化公司
  • 东莞南城网站设计策划公司名称
  • 苏州网站建设技术网站的缺点
  • 休闲吧网站建设做网站网站的
  • 网站规划与建设书福建网站建设科技有限公司
  • 中国建设银行招标网站seo排名关键词点击
  • 做漫画在线观看网站深圳横岗做网站
  • 安定网站建设齐齐哈尔网站建设
  • 公司网站建设总结报告网店无货源怎么做
  • 建站 wordpress重庆城乡规划和建设局网站
  • 找人做网站维护多少钱谷歌seo搜索引擎下载
  • 伊利网站规划与建设搜索引擎优化什么意思
  • 网站诚信建设网页与网站设计工作内容