中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

南寧網(wǎng)站推廣工具seo英文

南寧網(wǎng)站推廣工具,seo英文,哪里有做效果圖的網(wǎng)站,地方網(wǎng)站如何做競(jìng)價(jià)我們需要拓展之前的系統(tǒng),引入漫反射和鏡面光貼圖(Map)。這允許我們對(duì)物體的漫反射分量和鏡面光分量有著更精確的控制。 漫反射貼圖 我們希望通過(guò)某種方式對(duì)物體的每個(gè)片段單獨(dú)設(shè)置漫反射顏色。我們僅僅是對(duì)同樣的原理使用了不同的名字:其實(shí)都是使用一張覆蓋物體的圖像,讓我…

 我們需要拓展之前的系統(tǒng),引入漫反射鏡面光貼圖(Map)。這允許我們對(duì)物體的漫反射分量和鏡面光分量有著更精確的控制。

漫反射貼圖

我們希望通過(guò)種方式對(duì)物體的每個(gè)片段單獨(dú)設(shè)置漫反射顏色。我們僅僅是對(duì)同樣的原理使用了不同的名字:其實(shí)都是使用一張覆蓋物體的圖像,讓我們能夠逐片段索引其獨(dú)立的顏色值。在光照?qǐng)鼍爸?,它通常叫做一個(gè)漫反射貼圖(Diffuse Map)(3D藝術(shù)家通常都這么叫它),它是一個(gè)表現(xiàn)了物體所有的漫反射顏色的紋理圖像。

在著色器中使用漫反射貼圖的方法和紋理教程中是完全一樣的。但這次我們會(huì)將紋理儲(chǔ)存為Material結(jié)構(gòu)體中的一個(gè)sampler2D。我們將之前定義的vec3漫反射顏色向量替換為漫反射貼圖。 

我們也移除了環(huán)境光材質(zhì)顏色向量,因?yàn)?strong>環(huán)境光顏色在幾乎所有情況下都等于漫反射顏色,所以我們不需要將它們分開(kāi)儲(chǔ)存:

struct Material {sampler2D diffuse;vec3      specular;float     shininess;
}; 
...
in vec2 TexCoords;

 注意我們將在片段著色器中再次需要紋理坐標(biāo),所以我們聲明一個(gè)額外的輸入變量。接下來(lái)我們只需要從紋理中采樣片段的漫反射顏色值即可:

vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));

不要忘記將環(huán)境光的材質(zhì)顏色設(shè)置為漫反射材質(zhì)顏色同樣的值。

vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));

就是使用漫反射貼圖的全部步驟了。你可以看到,這并不是什么新的東西,但這能夠極大地提高視覺(jué)品質(zhì)。為了讓它正常工作,我們還需要使用紋理坐標(biāo)更新頂點(diǎn)數(shù)據(jù),將它們作為頂點(diǎn)屬性傳遞到片段著色器,加載材質(zhì)并綁定材質(zhì)到合適的紋理單元。

更新后的頂點(diǎn)數(shù)據(jù)可以在這里找到。頂點(diǎn)數(shù)據(jù)現(xiàn)在包含了頂點(diǎn)位置、法向量和立方體頂點(diǎn)處的紋理坐標(biāo)。讓我們更新頂點(diǎn)著色器來(lái)以頂點(diǎn)屬性的形式接受紋理坐標(biāo),并將它們傳遞到片段著色器中:

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords;
...
out vec2 TexCoords;void main()
{...TexCoords = aTexCoords;
}

記得去更新兩個(gè)VAO的頂點(diǎn)屬性指針來(lái)匹配新的頂點(diǎn)數(shù)據(jù),并加載箱子圖像為一個(gè)紋理。在繪制箱子之前,我們希望將要用的紋理單元賦值到material.diffuse這個(gè)uniform采樣器,并綁定箱子的紋理到這個(gè)紋理單元:

lightingShader.setInt("material.diffuse", 0);
...
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, diffuseMap);

使用了漫反射貼圖之后,細(xì)節(jié)再一次得到驚人的提升,這次箱子有了光照開(kāi)始閃閃發(fā)光(字面意思也是)了。箱子看起來(lái)可能像這樣:

4.1.lighting_maps.vs

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords;out vec3 FragPos;
out vec3 Normal;
out vec2 TexCoords;uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;void main()
{FragPos = vec3(model * vec4(aPos, 1.0));Normal = mat3(transpose(inverse(model))) * aNormal;  TexCoords = aTexCoords;gl_Position = projection * view * vec4(FragPos, 1.0);
}

4.1.lighting_maps.fs

#version 330 core
out vec4 FragColor;struct Material {sampler2D diffuse;vec3 specular;    float shininess;
}; struct Light {vec3 position;vec3 ambient;vec3 diffuse;vec3 specular;
};in vec3 FragPos;  
in vec3 Normal;  
in vec2 TexCoords;uniform vec3 viewPos;
uniform Material material;
uniform Light light;void main()
{// ambientvec3 ambient = light.ambient * texture(material.diffuse, TexCoords).rgb;// diffuse vec3 norm = normalize(Normal);vec3 lightDir = normalize(light.position - FragPos);float diff = max(dot(norm, lightDir), 0.0);vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;  // specularvec3 viewDir = normalize(viewPos - FragPos);vec3 reflectDir = reflect(-lightDir, norm);  float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);vec3 specular = light.specular * (spec * material.specular);  vec3 result = ambient + diffuse + specular;FragColor = vec4(result, 1.0);
} 

4.1.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);
}

4.1.light_cube.fs 

#version 330 core
out vec4 FragColor;void main()
{FragColor = vec4(1.0); // set all 4 vector values to 1.0
}
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <stb_image.h>#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>#include <learnopengl/shader_m.h>
#include <learnopengl/camera.h>#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void processInput(GLFWwindow *window);
unsigned int loadTexture(const char *path);// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;// 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, "LearnOpenGL", 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 global opengl state// -----------------------------glEnable(GL_DEPTH_TEST);// build and compile our shader zprogram// ------------------------------------Shader lightingShader("4.1.lighting_maps.vs", "4.1.lighting_maps.fs");Shader lightCubeShader("4.1.light_cube.vs", "4.1.light_cube.fs");// set up vertex data (and buffer(s)) and configure vertex attributes// -----------------------------------------------------
http://www.risenshineclean.com/news/63870.html

相關(guān)文章:

  • 用文本文檔做網(wǎng)站今日頭條搜索引擎
  • 深圳企業(yè)建站公司網(wǎng)絡(luò)營(yíng)銷推廣方案范文
  • 網(wǎng)站包括哪些內(nèi)容嗎seo發(fā)帖軟件
  • 河北工程招標(biāo)信息網(wǎng)官網(wǎng)網(wǎng)絡(luò)推廣優(yōu)化培訓(xùn)
  • dede網(wǎng)站版權(quán)信息標(biāo)簽2024年重啟核酸
  • 企業(yè)的網(wǎng)站特點(diǎn)新聞稿范文
  • 定制獨(dú)立站制作搜索關(guān)鍵詞優(yōu)化服務(wù)
  • 網(wǎng)上接單做衣服哪個(gè)網(wǎng)站如何創(chuàng)建一個(gè)自己的網(wǎng)站
  • wordpress后臺(tái)權(quán)限南寧企業(yè)官網(wǎng)seo
  • 品牌建設(shè)和品牌推廣優(yōu)化網(wǎng)站打開(kāi)速度
  • 重慶設(shè)計(jì)網(wǎng)站鄭州建網(wǎng)站的公司
  • 網(wǎng)站流量少怎么辦蕭山seo
  • 網(wǎng)站建設(shè)記在哪個(gè)科目app優(yōu)化方案
  • 以下屬于購(gòu)物搜索廣告的是溫州seo教程
  • 軟件開(kāi)發(fā)公司企業(yè)簡(jiǎn)介溫州網(wǎng)站建設(shè)優(yōu)化
  • wordpress縮略圖尺寸北京seo優(yōu)化外包
  • 網(wǎng)站備案真實(shí)核驗(yàn)單制作網(wǎng)頁(yè)教程
  • 鄭州網(wǎng)站建設(shè) .cc百度一下官方入口
  • 古典網(wǎng)站建設(shè)河南靠譜seo地址
  • 一般網(wǎng)站使用什么做的360公司官網(wǎng)首頁(yè)
  • 網(wǎng)站開(kāi)發(fā)功能怎么推廣自己的網(wǎng)站
  • 阿里云做的網(wǎng)站怎么樣刷外鏈網(wǎng)站
  • 網(wǎng)站開(kāi)發(fā)開(kāi)源框架石家莊網(wǎng)站建設(shè)案例
  • 炫酷網(wǎng)站設(shè)計(jì)怎么樣推廣最有效最快速
  • 易語(yǔ)言可以做網(wǎng)站后端怎樣推廣自己的廣告
  • 東莞大朗網(wǎng)站建設(shè)哪家口碑好百度平臺(tái)訂單查詢
  • 如何制作一個(gè)購(gòu)物網(wǎng)站網(wǎng)上營(yíng)銷培訓(xùn)課程
  • 用戶管理系統(tǒng)admin免費(fèi)檢測(cè)網(wǎng)站seo
  • 秦州建設(shè)網(wǎng)站怎么推廣軟件讓別人下載
  • 可以做測(cè)試的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷策劃與創(chuàng)意