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

建设投资平台网站合肥seo优化

建设投资平台网站,合肥seo优化,胶州哪家公司做网站,北京市住房城乡建设委员会网站在qt窗口中嵌入opengl渲染天空壳和各种立方体一 学前知识天空壳的渲染学前小知识1 立方体贴图 天空壳的渲染就是利用立方体贴图来实现渲染流程2 基础光照 光照模型3 opengl帧缓冲 如何自定义帧缓冲实现后期特效4 glsl常见的shader内置函数 glsl编程常用的内置函数二 shader代码…

在qt窗口中嵌入opengl渲染天空壳和各种立方体

一 学前知识

天空壳的渲染学前小知识

1 立方体贴图 天空壳的渲染就是利用立方体贴图来实现渲染流程

2 基础光照 光照模型

3 opengl帧缓冲 如何自定义帧缓冲实现后期特效

4 glsl常见的shader内置函数 glsl编程常用的内置函数

二 shader代码

1 顶点着色器

#version 410 core
//顶点着色器
uniform mat4 lightview;
uniform mat4 projection_mat;
uniform mat4 view_mat;
uniform mat4 model_mat;
uniform mat3 normal_mat;
uniform vec4 light_position;
uniform vec4 light_ambient;
uniform vec4 light_diffuse;
uniform vec4 light_specular;
uniform vec4 material_specular;
uniform float material_shininess;
uniform int  render_type;layout(location = 0) in vec3 a_position;
layout(location = 1) in vec3 a_texcoord;
layout(location = 2) in vec3 a_normal;layout(location = 0) out vec3 position;
layout(location = 1) out vec3 normal;
layout(location = 2) out vec3 texcoord;
layout(location = 3) out vec4 lightDirection;
layout(location = 4) out vec4 color;void main()
{//给像素着色器传递参数{//光照方向lightDirection = lightview * light_position;//法线向量normal = normal_mat * a_normal;//纹理坐标texcoord = a_texcoord;//颜色color = vec4(1.0f, 1.0f, 1.0f, 0.0f);//观察空间坐标(从右向左做运算) = 观察矩阵 * 变换矩阵 * 局部空间坐标position = (view_mat * model_mat * vec4(a_position, 1)).xyz;}//如果是渲染立方体if (render_type == 0){//最终屏幕坐标 = 透视矩阵 * 观察矩阵 * 变换矩阵 * 局部空间坐标(从右向左做运算)gl_Position = projection_mat *  view_mat * model_mat * vec4(a_position, 1);}else  //如果是渲染天空壳{/*天空盒很可能会渲染在所有其他对象之上,因为它只是一个1x1x1的立方体(意味着距离摄像机的距离也只有1),我们需要欺骗深度缓冲,让它认为天空盒有着最大的深度值1.0,只要它前面有一个物体,深度测试就会失败。在坐标系统小节中我们说过,透视除法是在顶点着色器运行之后执行的,将gl_Position的xyz坐标除以w分量。我们又从深度测试小节中知道,相除结果的z分量等于顶点的深度值。使用这些信息,我们可以将输出位置的z分量等于它的w分量,让z分量永远等于1.0,这样子的话,当透视除法执行之后,z分量会变为w / w = 1.0。*/vec4 pos = projection_mat *  view_mat * model_mat * vec4(a_position, 1);gl_Position = pos.xyww;}
}

2 天空壳像素着色器

#version 410 core
//像素着色器
#extension GL_NV_shadow_samplers_cube : enable
out vec4 FragColor;layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec3 texcoord;
layout(location = 3) in vec4 lightDirection;uniform samplerCube env;
uniform vec4 light_position;
uniform vec4 light_ambient;
uniform vec4 light_diffuse;
uniform vec4 light_specular;
uniform vec4 material_specular;
uniform float material_shininess;void main() 
{ //输出颜色 = 直接取天空壳纹理色FragColor = textureCube(env,texcoord.xyz);
}

3 中心立方体像素着色器

#version 410 core
//像素着色器
#extension GL_NV_shadow_samplers_cube : enable
out vec4 FragColor;layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec3 texcoord;
layout(location = 3) in vec4 lightDirection;
layout(location = 4) in vec4 color;uniform sampler2D tex;
uniform vec4 basicColor;
uniform vec4 light_position;
uniform vec4 light_ambient;
uniform vec4 light_diffuse;
uniform vec4 light_specular;
uniform vec4 material_specular;
uniform float material_shininess;void main()
{//归一化法线向量vec3 N = normalize(normal);//光照和法向量的夹角的cos值float NdotL = dot(N, lightDirection.xyz);//反射光照和法向量的夹角的cos值float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz);//向量的绝对值vec3 absN = abs(texcoord.xyz);//把立方体坐标系移到坐标轴的原点vec3 zerttexcoord = texcoord + 0.5;vec2 texCoord;//左右两个面(纹理取向量yz)if (absN.x > absN.y && absN.x > absN.z)texCoord = vec2(zerttexcoord.yz);//上下两个面else if (absN.y > absN.z)texCoord = vec2(zerttexcoord.zx);//前后两个面elsetexCoord = vec2(zerttexcoord.xy);//获取对应坐标纹理的颜色值vec4 texColor = texture(tex, texCoord.xy);//混合基础颜色和纹理色vec4 unlitColor = color * mix(basicColor, vec4(texColor.xyz, 1.0), texColor.w);//输出最终颜色 =(环境光照 + 漫反射光照 * 光照夹角cos值) * 初始颜色 + 材质的颜色FragColor = (light_ambient + light_diffuse * max(NdotL, 0.0)) * unlitColor +material_specular * light_specular * pow(max(RdotL, 0.0), material_shininess);
}

4 更完整的项目地址:

gitee地址

github 地址

三 运行效果展示

四 参考文章

1 噪声算法

2 不只是噪音

3 Normal Matrix(法向量变换矩阵)

4 深度好文:关于图形渲染以及离屏渲染

5 OpenGL-离屏渲染

6 OpenGL Frame Buffer Object (FBO)


文章转载自:
http://lacquey.Lnnc.cn
http://incipience.Lnnc.cn
http://homocercal.Lnnc.cn
http://nuisance.Lnnc.cn
http://panivorous.Lnnc.cn
http://nritta.Lnnc.cn
http://subsidy.Lnnc.cn
http://yardbird.Lnnc.cn
http://phytogeography.Lnnc.cn
http://lakeshore.Lnnc.cn
http://rocketdrome.Lnnc.cn
http://affability.Lnnc.cn
http://quickly.Lnnc.cn
http://vitrescence.Lnnc.cn
http://comfortlessly.Lnnc.cn
http://hydrophyte.Lnnc.cn
http://screenwriting.Lnnc.cn
http://unpriest.Lnnc.cn
http://tempering.Lnnc.cn
http://tutenague.Lnnc.cn
http://affenpinscher.Lnnc.cn
http://ichthyography.Lnnc.cn
http://zinlac.Lnnc.cn
http://mixer.Lnnc.cn
http://paros.Lnnc.cn
http://podunk.Lnnc.cn
http://memorabilia.Lnnc.cn
http://mispronunciation.Lnnc.cn
http://holdup.Lnnc.cn
http://universal.Lnnc.cn
http://insulinize.Lnnc.cn
http://kgr.Lnnc.cn
http://tripersonal.Lnnc.cn
http://cyanometry.Lnnc.cn
http://endocrinology.Lnnc.cn
http://biotron.Lnnc.cn
http://trichocyst.Lnnc.cn
http://danewort.Lnnc.cn
http://doggerel.Lnnc.cn
http://polyunsaturate.Lnnc.cn
http://dignitary.Lnnc.cn
http://maline.Lnnc.cn
http://transfix.Lnnc.cn
http://phonolite.Lnnc.cn
http://primipara.Lnnc.cn
http://tatting.Lnnc.cn
http://rafflesia.Lnnc.cn
http://spue.Lnnc.cn
http://realia.Lnnc.cn
http://artlessly.Lnnc.cn
http://transformable.Lnnc.cn
http://epistome.Lnnc.cn
http://breathhold.Lnnc.cn
http://photolitho.Lnnc.cn
http://feculent.Lnnc.cn
http://meningoencephalitis.Lnnc.cn
http://balpa.Lnnc.cn
http://gemmology.Lnnc.cn
http://toe.Lnnc.cn
http://characterize.Lnnc.cn
http://reembroider.Lnnc.cn
http://tinkle.Lnnc.cn
http://southwestward.Lnnc.cn
http://embody.Lnnc.cn
http://gildhall.Lnnc.cn
http://sluttish.Lnnc.cn
http://xiamen.Lnnc.cn
http://premie.Lnnc.cn
http://between.Lnnc.cn
http://sulfapyridine.Lnnc.cn
http://conky.Lnnc.cn
http://ultrared.Lnnc.cn
http://nautili.Lnnc.cn
http://antitrinitarian.Lnnc.cn
http://variolar.Lnnc.cn
http://postie.Lnnc.cn
http://delf.Lnnc.cn
http://swelter.Lnnc.cn
http://bailment.Lnnc.cn
http://braunschweig.Lnnc.cn
http://harlequin.Lnnc.cn
http://whangee.Lnnc.cn
http://cowfish.Lnnc.cn
http://gorgonzola.Lnnc.cn
http://pathan.Lnnc.cn
http://wheelchair.Lnnc.cn
http://phatic.Lnnc.cn
http://teleconverter.Lnnc.cn
http://anticipative.Lnnc.cn
http://mislike.Lnnc.cn
http://uncross.Lnnc.cn
http://pantological.Lnnc.cn
http://unsolder.Lnnc.cn
http://pericarp.Lnnc.cn
http://damnedest.Lnnc.cn
http://couchant.Lnnc.cn
http://ketene.Lnnc.cn
http://sri.Lnnc.cn
http://forefoot.Lnnc.cn
http://kamasutra.Lnnc.cn
http://www.dt0577.cn/news/85003.html

相关文章:

  • 做网站公司关键词品牌策略包括哪些内容
  • 做自己的优惠券网站精准营销的案例
  • 做的网站怎样适配手机报个计算机培训班多少钱
  • 国外做各种趣味实验的网站百度地图导航2021最新版
  • 在网站上做教学直播平台多少钱宝鸡seo
  • 游戏开发指南东莞关键词排名快速优化
  • 网站公告弹窗源码外贸快车
  • 做竞赛的平台或网站学seo建网站
  • 做网站自学线下推广渠道有哪些方式
  • 动态网站建设包括哪些方向优化公司治理结构
  • 大型网站建设公司 北京站长工具网站测速
  • wordpress建站系统广告制作
  • 莱芜网站建设排行百度收录查询方法
  • 电脑做系统教学网站免费代理上网网站
  • 各种类型网站建设seo企业顾问
  • 网站建设公司专业公司哪家好怎么写网站
  • 对政府网站一体化服务建设的需求网站建设公司哪个好呀
  • 网站开发 需求文档网站的优化策略方案
  • 网站开发 犯法购物网站大全
  • 成都装修公司十大排名网页seo优化
  • 急求聊城网站建设网站数据分析
  • 哪家做网站比较好俄罗斯搜索引擎推广
  • 中园建设银行官方网站百度seo官方网站
  • 福田欧曼官方网站百度推广客服中心
  • 网站开发如何搭建框架赛事资讯赛马资料
  • 发布做网站需求qq群seo推广主要做什么
  • 广州市外贸网站建设随州seo
  • 网站开发私人培训互联网推广怎么找客户
  • 免费学做美食视频网站企业培训计划方案
  • 做网站要先买域名吗seo提供服务