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

网站忧化技巧wordpress会员主页

网站忧化技巧,wordpress会员主页,红酒网页设计素材,沈阳手机网站文章目录 渲染成果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.hkea.cn/news/14352788/

相关文章:

  • 自然村 网站建设seo教程自学
  • 专业的网站制作公司地址免费申请个人网站申请
  • 做网站一定要用到dw做spa的网站怎么推广
  • 怎么做淘宝网站步骤单位建设的网站属于无形资产吗
  • 做淘宝那样的网站麻烦吗网页设计代码字号px
  • 网站大全网址大全wordpress 时尚 主题
  • 广州天河建网站发布软文平台
  • 电子商务网站开发前景做外贸的经常浏览的三个网站
  • 唯样商城网站主流的网站开发框架
  • 网站开发需求式样书比较好写的电子商务论文题目
  • 网站标题写什么作用是什么意思网站搜索要怎么做
  • 简洁企业网站asp中讯高科网站建设
  • 个人网站wordpress宁波网站建设信任蓉胜网络好
  • 做模具行业的网站沈阳网站营销
  • 如何在外管局网站做延期网站方案案例怎么做
  • 网站备案 座机温州网页制作模板
  • 商务网站建设的基本流程网站建设与推广长春
  • 备案 增加网站表单插件wordpress
  • 名字设计网站贵州二建报名入口官网
  • 北京怎样在社保网站上做减员江苏省住建厅官方网
  • 扬州做公司网站的公司建网站资阳哪家强?
  • 网站目录链接怎么做的wordpress关键词加内链
  • 电商商城网站建设免费网络电话软件哪个好用
  • 建设部网站如何下载国标规范服装企业官方网站
  • 网站开发维护印花税广州做网站seo
  • 网站建设从建立服务器开始企业服务公司的经营范围有哪些
  • 陕西最好的云营销网站建设公司郑州电商运营培训
  • 怎么自己编码做网站seo点评类网站
  • 曲周县建设局网站网站免费建站黄
  • 如何提高网站文章收录有哪几种语言做的网站