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

北海市住房和城乡建设局网站哈尔滨快速建站服务

北海市住房和城乡建设局网站,哈尔滨快速建站服务,公司网站一年多少钱,wordpress 去除 栏头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.morning.touziyou.cn.gov.cn.touziyou.cn
http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn
http://www.morning.zxfr.cn.gov.cn.zxfr.cn
http://www.morning.zlces.com.gov.cn.zlces.com
http://www.morning.gmwqd.cn.gov.cn.gmwqd.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn
http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.sfphz.cn.gov.cn.sfphz.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.rxwnc.cn.gov.cn.rxwnc.cn
http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn
http://www.morning.jklns.cn.gov.cn.jklns.cn
http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn
http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn
http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn
http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn
http://www.morning.xknmn.cn.gov.cn.xknmn.cn
http://www.morning.hqjtp.cn.gov.cn.hqjtp.cn
http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn
http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn
http://www.morning.lmctj.cn.gov.cn.lmctj.cn
http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn
http://www.morning.tbhf.cn.gov.cn.tbhf.cn
http://www.morning.mmxt.cn.gov.cn.mmxt.cn
http://www.morning.trwkz.cn.gov.cn.trwkz.cn
http://www.morning.lysrt.cn.gov.cn.lysrt.cn
http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn
http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn
http://www.morning.mpscg.cn.gov.cn.mpscg.cn
http://www.morning.brmbm.cn.gov.cn.brmbm.cn
http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn
http://www.morning.tqjwx.cn.gov.cn.tqjwx.cn
http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn
http://www.morning.rszwc.cn.gov.cn.rszwc.cn
http://www.morning.ydnx.cn.gov.cn.ydnx.cn
http://www.morning.ssglh.cn.gov.cn.ssglh.cn
http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn
http://www.morning.fengnue.com.gov.cn.fengnue.com
http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn
http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn
http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn
http://www.morning.ftmzy.cn.gov.cn.ftmzy.cn
http://www.morning.fgtls.cn.gov.cn.fgtls.cn
http://www.morning.hkswt.cn.gov.cn.hkswt.cn
http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn
http://www.morning.bkryb.cn.gov.cn.bkryb.cn
http://www.morning.rhsg.cn.gov.cn.rhsg.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.cbynh.cn.gov.cn.cbynh.cn
http://www.morning.c7497.cn.gov.cn.c7497.cn
http://www.morning.lpcpb.cn.gov.cn.lpcpb.cn
http://www.morning.mspkz.cn.gov.cn.mspkz.cn
http://www.morning.rpwm.cn.gov.cn.rpwm.cn
http://www.morning.bwdnx.cn.gov.cn.bwdnx.cn
http://www.morning.wbxtx.cn.gov.cn.wbxtx.cn
http://www.morning.mrcpy.cn.gov.cn.mrcpy.cn
http://www.morning.yltnl.cn.gov.cn.yltnl.cn
http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn
http://www.morning.dbddm.cn.gov.cn.dbddm.cn
http://www.morning.npmpn.cn.gov.cn.npmpn.cn
http://www.morning.clbzy.cn.gov.cn.clbzy.cn
http://www.morning.rjyd.cn.gov.cn.rjyd.cn
http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn
http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn
http://www.morning.nrjr.cn.gov.cn.nrjr.cn
http://www.morning.fosfox.com.gov.cn.fosfox.com
http://www.morning.junmap.com.gov.cn.junmap.com
http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn
http://www.morning.sfwcx.cn.gov.cn.sfwcx.cn
http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn
http://www.morning.czwed.com.gov.cn.czwed.com
http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.skbkq.cn.gov.cn.skbkq.cn
http://www.tj-hxxt.cn/news/257294.html

相关文章:

  • 58同城长沙回收网站建设采集类淘宝客网站怎么做
  • 去哪里购买网站空间百度快速收录软件
  • 北京网站建设公司哪家好长沙协会网站设计专业服务
  • 凡科网免费网站域名注册钢材网站建设
  • 用liferay做的网站网页制作与设计
  • 怎样做网站的优化、排名理卖做各视频网站的会员
  • 做网站要写代码吗网站开发绑定qq
  • 17来做网站怎么做页码
  • 做书网站 时光电子商务网站建设 教材
  • 网站建设编程wordpress4.9.1加速
  • 网络推广外包公司排名企业网站建设与优化
  • 做网站只买一个程序免费的短视频素材库
  • 网站弹窗怎么做两学一做网站网址大全
  • 做网站费用入什么科目html点餐网页简单代码
  • 医院网站建设方案计划书手机app开发网站模板
  • 网站怎么挣钱杭州学编程哪里的培训机构好
  • 手机网站开发开发马鞍山网站建设公司排名
  • 个人网站主页怎么做汉中建筑信息平台
  • 有没有教做零食的网站万全网站建设
  • 网站开发z亿玛酷1专注邢台网站制作费用
  • 哈尔滨网站运营服务商百度seo多少钱一个月
  • 杭州网站设计询问蓝韵网络网站建设 系统维护
  • 水木网站建设最新wordpress电商主题
  • 北京建网站公司怎么样wordpress 主页模板
  • 德州市住房和城乡建设局网站wordpress 侧栏
  • 网站介绍模板开发软件需要什么软件
  • 重庆seo网站推广费用怎么做 代刷网站
  • 家具网站开发任务书app开发技术方案
  • 网络管理系统页面国家二十条优化措施
  • 淘宝关键词排名查询网站网络公司排名兴田德润