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

网站忧化技巧大型电子商务网站开发

网站忧化技巧,大型电子商务网站开发,排名好的移动网站建设,网站域名备案证书下载文章目录 渲染成果Assimp库准备#xff1a;Mesh类修改#xff1a;透明贴图使用#xff1a;光源封装#xff1a;使用方式在如下测试环境中#xff1a; 渲染成果 Assimp库准备#xff1a; 从GitHub拉取源码#xff0c;根据网络教程#xff0c;借助CMake生成VS工程项目Mesh类修改透明贴图使用光源封装使用方式在如下测试环境中 渲染成果 Assimp库准备 从GitHub拉取源码根据网络教程借助CMake生成VS工程项目并用VS将其编译为静态链接库lib或动态链接库dll lib。最后将其库文件和工程内的include文件复制到图形工程下。 Mesh类修改 在抽象ModelMesh这些类时我改动LearnOpenGL的最大的类是Mesh类将其直接使用的GLAPI替换成了封装好的API类如下。修改的数据结构在Model中修改相应的数据存放方法即可 //Mesh.h#pragma once #include GL/glew.h #include GLFW/glfw3.h#include glm/glm.hpp#include vector#include Shader.h #include VertexArray.h #include VertexBuffer.h #include VertexBufferLayout.h #include IndexBuffer.h #include Texture.husing namespace std;struct Vertex {glm::vec3 Position;glm::vec3 Normal;glm::vec2 TexCoords; };struct TextureData {string name;Texture* texture; };class Mesh { public:vectorVertex vertices;vectorGLuint indices;vectorTextureData textures;Mesh(vectorVertex vertices, vectorGLuint indices, vectorTextureData textures);void Draw(Renderer renderer, Shader shader);private:VertexArray VAO;VertexBuffer VBO;IndexBuffer EBO;void setupMesh(); };//Mesh.cpp #include Mesh.hMesh::Mesh(vectorVertex vertices, vectorGLuint indices, vectorTextureData textures) {this-vertices vertices;this-indices indices;this-textures textures;this-setupMesh(); }void Mesh::setupMesh() {VAO.Bind();VBO.Init(vertices[0], vertices.size() * sizeof(Vertex));EBO.Init(indices[0], indices.size());VAO.AddVertexBuffer(VBO);VAO.Unbind(); }void Mesh::Draw(Renderer renderer, Shader shader) {for (int i 0; i textures.size(); i){textures[i].texture-Bind(i);shader.SetUniform1i(textures[i].name, i);}renderer.Draw(VAO, EBO, shader); }透明贴图使用 我所需要绘制的模型有半透明的面部贴图因此需要使用透明度这里需要注意的是如果所有使用数据获取数据的地方都没有出错但仍没有透明效果可以检查原始数据的问题如图片本身的透明效果在工程中加载图片时是否包含透明通道。 //shader void main() {vec3 norm normalize(Normal);vec3 viewDir normalize(viewPos - FragPos);//透明测试vec4 texColor texture(texture_diffuse, TexCoords);if(texColor.a 0.2 mixFactor 0)discard;//光照着色color vec4(CalcPointLight(light, norm, FragPos, viewDir), 1); }光源封装 每次使用光源需要大段的赋值语句因此对其进行简单封装目前只封装了点光源 //Light.h#pragma once #include iostream #include glm/glm.hpp#include Shader.husing namespace std;class Light { public:Light(glm::vec3 position { 1.2f, 1.0f, 2.0f }, glm::vec3 ambient { 0.4, 0.4, 0.4 },glm::vec3 diffuse { 1.2, 1.2, 1.2 },glm::vec3 specular { 0.1, 0.1, 0.1 },float constant 1, float linear 0.09, float quadratic 0.032);void SetupShader(Shader shader, string lightName);private:glm::vec3 m_Position;glm::vec3 m_Ambient;glm::vec3 m_Diffuse;glm::vec3 m_Specular;float m_Constant;float m_Linear;float m_Quadratic; };//Light.cpp #include Light.hLight::Light(glm::vec3 position, glm::vec3 ambient, glm::vec3 diffuse, glm::vec3 specular, float constant, float linear, float quadratic) {m_Position position;m_Ambient ambient;m_Diffuse diffuse;m_Specular specular;m_Constant constant;m_Linear linear;m_Quadratic quadratic; }void Light::SetupShader(Shader shader, std::string lightName) {shader.SetUniform3f(lightName .position, m_Position.x, m_Position.y, m_Position.z);shader.SetUniform3f(lightName .ambient, m_Ambient.x, m_Ambient.y, m_Ambient.z);shader.SetUniform3f(lightName .diffuse, m_Diffuse.x, m_Diffuse.y, m_Diffuse.z);shader.SetUniform3f(lightName .specular, m_Specular.x, m_Specular.y, m_Specular.z);shader.SetUniform1f(lightName .constant, m_Constant);shader.SetUniform1f(lightName .linear, m_Linear);shader.SetUniform1f(lightName .quadratic, m_Quadratic); } 使用方式在如下测试环境中 #pragma once#include RunBase.h#include Model.h #include Light.h#include glm/gtc/type_ptr.hppclass AssimpTest : public RunBase { public:Model* body, *blue, *ear, *eye, *mao, *mouth;Shader diffuseShader;Renderer renderer;Light light;AssimpTest() : RunBase(){diffuseShader.Init(res/shaders/AssimpTest.shader);}virtual void Init(GLFWwindow* window, float targetFrameTime) override{/*GLCall(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC1_ALPHA));GLCall(glEnable(GL_BLEND));*/body new Model(res/models/jixuanyou/body.obj);blue new Model(res/models/jixuanyou/blue.obj);ear new Model(res/models/jixuanyou/ear.obj);eye new Model(res/models/jixuanyou/eye.obj);mao new Model(res/models/jixuanyou/mao.obj);mouth new Model(res/models/jixuanyou/mouth.obj);}virtual void RenderLoop(GLFWwindow* window, float targetFrameTime) override{renderer.Clear();//绘制受光物体diffuseShader.Bind();//视图矩阵透视参数glm::mat4 view(1), proj(1), model(1);view camera.GetViewMatrix();proj glm::perspectiveGLfloat(45, 640 / 480, .1f, 100.f);//赋值透视diffuseShader.SetUniformMat4f(view, glm::value_ptr(view));diffuseShader.SetUniformMat4f(projection, glm::value_ptr(proj));diffuseShader.SetUniformMat4f(model, glm::value_ptr(model));//赋值光照light.SetupShader(diffuseShader, light);//赋值视图位置diffuseShader.SetUniform3f(viewPos, camera.Position.x, camera.Position.y, camera.Position.z);diffuseShader.SetUniform1f(shininess, 4);// 取消纯色diffuseShader.SetUniform1f(mixFactor, 0);//不透明物件body-Draw(renderer, diffuseShader);ear-Draw(renderer, diffuseShader);eye-Draw(renderer, diffuseShader);mouth-Draw(renderer, diffuseShader);// 使用纯色diffuseShader.SetUniform1f(mixFactor, 1);// 浅蓝色diffuseShader.SetUniform3f(diffuseColor, 0.50, 0.66, 0.81);mao-Draw(renderer, diffuseShader);// 深蓝色diffuseShader.SetUniform3f(light.diffuse, 4, 4, 4);diffuseShader.SetUniform3f(light.specular, 0.5, 0.5, 0.5);diffuseShader.SetUniform3f(diffuseColor, 0.022, 0.06, 0.21);blue-Draw(renderer, diffuseShader);}virtual bool UseCameraControl() override{return true;} };
http://www.dnsts.com.cn/news/119127.html

相关文章:

  • 深圳市住房和建设局网站住房广告网站
  • h5网站建设需要哪些资料wordpress淘宝主题破解
  • 代制作网站个人网站空间收费
  • 免费制作论坛网站网络营销推广服务商
  • 在什么网站做外贸呼市推广网站
  • 上海市建设局官方网站如何搭建系统平台
  • 网站内容规划怎么写深圳市建工集团
  • 深圳做网站的公司排行简述企业网站建设实施的步骤
  • 十大行情软件网站下载惠州个人做网站联系人
  • 网站备案信息查询接口宝安网站推广平台
  • 专门做玉的网站网站改版提升总结
  • 外贸网站建设注意事项徐州企业建站
  • 网站建设管理情况说明WordPress建站维护服务
  • 建设一个网站的规划平面设计兼职接单群
  • 网站做推广需要营业执照网站关键词写在哪里
  • 企业网站宣传视频外链郑州百度快速排名提升
  • 厂西建设厅网站代做网站app
  • 网站站点建设做全球视频网站赚钱吗
  • 网站基础模板我做网站编辑写文章很慢怎么办
  • 免费建立自己的个人网站网站建设摊销会计分录
  • 成品网站能用吗wordpress能发多少邮件
  • 百度上能收到的企业名称网站怎么做玛沁县公司网站建设
  • 百度竞价推广出价技巧aso搜索优化
  • wordpress 访问不了泰安抖音seo
  • 营销网站设计方案中国风html5网站模板
  • 在线做文档的网站成都市温江区建设局网站
  • 做产地证网站泰安市建设信息网站
  • 珠海网站制作推广公司哪家好网易收不到wordpress
  • 泉州网站建设有哪些网站建设制作与运营
  • 苏州工业园区建设网站东莞网络优化服务商