网站登录页面怎么做的软件开发者英文

news/2025/10/4 14:19:09/文章来源:
网站登录页面怎么做的,软件开发者英文,哈尔滨网络推广优化,住房和城乡建设部机关服务中心立方体纹理就是包含6个2D纹理的纹理.6个纹理有序排列在立方体的6个面.其可以通过方向向量采样立方体纹理上的纹素.创建立方体贴图跟创建2D贴图一样,但是绑定到GL_TEXTURE_CUBE_MAP上.glGenTextures(1, CubeMapID); glBindTexture(GL_TEXTURE_CUBE_MAP, CubeMapID);立方体纹…立方体纹理就是包含6个2D纹理的纹理.6个纹理有序排列在立方体的6个面.其可以通过方向向量采样立方体纹理上的纹素.创建立方体贴图跟创建2D贴图一样,但是绑定到GL_TEXTURE_CUBE_MAP上.glGenTextures(1, CubeMapID); glBindTexture(GL_TEXTURE_CUBE_MAP, CubeMapID); 立方体纹理右6个面,每个面都要调用一次glTexImage2D,因此共需要调用6次.每个面有特定的纹理目标.按照顺序是这样.这些纹理目标为枚举型,按照顺序他们的值是线性叠加的.因此编写代码的时候可以用for循环调用glTexImage2D,然后用循环次数作为这些纹理目标的枚举值.从GL_TEXTUREE_MAP_POSITIVE_X开始.例如以i作为循环次数记录.glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X i, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 立方体纹理也需要设置环绕模式与过滤模式.glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 一般的纹理是二维的因此仅需要设定ST的环绕模式即可.但是立方体纹理是三维的因此需要对R设置.可以简单理解为z坐标.天空盒立方体纹理常用于天空盒.设置好纹理数据和VAO,VBO之后,编写天空盒用的shader就可以了.#version 330 core layout(location0) in vec3 aPos;out vec3 TexCoords;uniform mat4 projection; uniform mat4 view;void main() {TexCoordsaPos;gl_Position projection * view * vec4(aPos, 1.0); }片元着色器获取立方体纹理的纹素作为颜色输出.#version 330 core out vec4 FragColor; in vec3 TexCoords; uniform samplerCube skyBox; void main() {FragColortexture(skyBox,TexCoords); }在绘制天空和的时候需要开启深度测试,以及关闭天空盒的深度写入.因为有些对象与相机的距离可能比天空盒面到相机的距离远.因此这种情况下天空盒有可能将某些物体覆盖了.并且需要注意需要先渲染天空盒再渲染其他物体.int main() { glDepthMask(GL_FALSE); //绘制天空盒 //... glDepthMask(GL_TRUE); //绘制其他物体 }如果按照以往的思路将MVP矩阵参数传进去将纹理坐标设置好的话并不会得到一个良好的结果.因为我们不想天空盒跟场景中其他物体一样.天空盒不应受移动影响.仅受旋转和缩放影响.因此需要去掉观察矩阵的平移部分.即保留矩阵左上角部分.viewglm::mat4(glm::mat3(view))将这个view传进去shader可得到正确的显示.以上的做法是关闭深度写入,让天空盒不参与深度测试.让每个像素都运行一次天空盒的片元着色器.但其实将天空盒的深度值永远设置为1就可以获得正确的效果了并且参与深度测试的话也不需要每个像素都调用天空盒的着色器.因为在某些复杂的场景里面天空盒仅仅显示一小部分.为此,我们需要将天空盒深度值永远设为1.根据流水线,在顶点着色器运行时投影矩阵会进行透视除法,并最后处于标准化设备空间(NDC)中的.因此若想经过透视除法后的z值为1,则需要将z值定为w.#version 330 core layout(location0) in vec3 aPos;out vec3 TexCoords;uniform mat4 projection; uniform mat4 view;void main() {TexCoordsaPos;vec4 pos projection * view * vec4(aPos, 1.0);gl_Position pos.xyww; }将z值定为w进行透视除法后就变为1.这时候还需要开启深度测试并调用深度测试函数设置比较运算符为GL_LEQUAL.GL_LEQUAL为片元的深度值小于等于缓存的深度值时通过测试.因为如果调用默认的GL_LESS的话基本上天空盒是不会通过测试的.这时候就不需要设置关闭深度写入了.glDepthFunc(GL_LEQUAL); //绘制天空盒 glDepthFunc(GL_LESS);绘制完天空盒之后改回默认的深度运算操作符,以便其他物体进行深度测试.如果场景里面没有需要透明度混合的物体的话则天空盒可以随便放置于主循环的某一个位置进行渲染.否则的话会出现这种情况.2B因为不需要透明度混合,因此可以获得正常的渲染效果.但是草地于窗户精灵体需要透明度混合因此会出现奇怪的效果.这里我是先渲染场景的所有物体,最后才渲染天空盒的.因此这时候场景物体部分的深度值比1小,通过测试与默认的颜色缓存的颜色进行混合.接着天空盒与深度缓存进行测试,因为天空盒深度值为1,比场景里物体的深度值大,因此这部分片元会被抛弃.所以物体混合的颜色里面没有天空盒纹理的颜色.为此,最好在主循环刚开始的时候渲染天空盒.让天空盒颜色代替默认颜色缓存里的颜色.所以,无论是对天空盒关闭深度写入还是设置天空盒的深度值为1,都最好在主循环开始的时候渲染.立方体纹理可以用于环境映射.常用有反射和折射.首先是反射反射很简单.主要就是获取向量R的方向然后通过R在立方体纹理中获取纹素.在顶点着色器获取片元的位置以及法向量输出到片元着色器.#version 330 core layout (location0) in vec3 aPos; layout (location1) in vec3 aNormal;out vec3 fragPos; out vec3 Normal;uniform mat4 model; uniform mat4 view; uniform mat4 projection;void main() { Normalmat3(transpose(inverse(view*model)))*aNormal;fragPosvec3(view*model*vec4(aPos,1.0));gl_Positionprojection*view*model*vec4(aPos,1.0); } 这里的法线用了法线矩阵消除缩放对物体法线的影响.片元位置放置在相机空间中,因为我偏好于将这些计算放在相机空间,这样就不用在片元着色器计算观察位置到片元位置了,直接可以用片元位置代替,因为在相机空间中,摄像机的位置就是原点.根据上面的图片,需要在片元着色器计算反射向量 .反射向量可以通过GLSL内置函数 计算,也可以用反射向量的计算方式计算 .因为在顶点着色器片元位置在相机空间下,所以向量 仅需要对片元位置归一化即可.#version 330 core out vec4 FragColor; in vec3 Normal; in vec3 fragPos;uniform samplerCube skybox;void main() { //环境映射反射vec3 Inormalize(fragPos);vec3 Rreflect(I,normal);FragColorvec4(texture(skybox,R).xyz,1.0); } 可以运用反射贴图使模型的仅某一部分进行反射.通过引入反射贴图并对反射贴图进行采样获得当前网格的反射系数,然后运用插值对模型的反射贴图与其他光照模型进行综合struct Material {sampler2D texture_diffuse0;sampler2D texture_specular0;sampler2D texture_normal0;sampler2D texture_reflection0;float shininess;//影响镜面高光的散射/半径 }; 在material就结构体里面增加一个反射贴图的声明.接着求出反射系数.float reflectRate(texture(material.texture_reflection0,TexCoords).rtexture(material.texture_reflection0,TexCoords).gtexture(material.texture_reflection0,TexCoords).b)/3; 不过反射贴图一般颜色分量不是0就是1,所以也可以简单点 float reflectRatetexture(material.texture_reflection0,TexCoords).r; 在总颜色输出那里做一个插值就可以了.void main() { vec3 normalnormalize(Normal);vec3 viewDirnormalize(-fragPos);//观察空间下进行vec3 DirectionCalcDirectionalLight(dirLight,normal,viewDir);vec3 Point CalcPointLight(pointLight,normal,fragPos,viewDir);vec3 SpotCalcSpotLight(spotLight,normal,fragPos,viewDir);//环境映射反射vec3 Inormalize(fragPos);vec3 Rreflect(I,normal);float reflectRatetexture(material.texture_reflection0,TexCoords).r;vec4 reflectiontexture(skybox,R);FragColorvec4(reflectRate*reflection.xyz(1-reflectRate)*(SpotPointDirection),1.0); } 最终效果中可以看到身上比较闪闪的地方都有天空盒的映射,其中以眼部的镜片效果最明显.折射折射与反射的区别不大,就是将 函数改为 函数,再加一个折射率常数.折射用到了斯涅耳定律,斯涅耳定律很简单: 其中 , 表示两种介质的折射率, , 表示光线方向与法线的夹角.介质的折射率有一个固定的参数.但是!!!我们不需要自己计算斯涅尔定律,反射有内建GLSL函数.折射与反射的区别不大,就是将 函数改为 函数,再加一个折射率常数.将上述反射部分的片元着色器代码修改下.其中 ,两种折射率比例.然后作为 的第三个参数就行float ratio1.0/1.33; vec3 Inormalize(fragPos); vec3 Rrefract(I,normal,ratio);FragColorvec4(texture(skybox,R).xyz,1.0); 当然, 函数想要自己算也不是不行.杨超cg refract函数​zhuanlan.zhihu.com这里有一篇折射函数的推导过程.其中 .按照这篇文章的推导即可得到正确折射向量.vec3 refract(vec3 I,vec3 normal,float ratio) {vec3 OCdot(-I,normal)*normal;vec3 CA-I-OC;vec3 EB-ratio*CA;float EB_length_2EB.x*EB.xEB.y*EB.yEB.zEB.z;vec3 OE-sqrt(1-EB_length_2)*normal;return EBOE; } 立方体贴图 - LearnOpenGL CN​learnopengl-cn.github.io

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国际购物网站平台有哪些wordpress付费播放

前提要求 ubuntu下安装lxd 参考Rockylinux下安装lxd 参考LXC 源替换参考LXC 容器端口发布参考LXC webui 管理<

地方美食网站开发意义优秀网站配色

作者&#xff1a;轩辕之风O来源&#xff1a;编程技术宇宙-前言-程序员经常要面临的一个问题就是&#xff1a;如何提高程序性能&#xff1f;这篇文章&#xff0c;我们循序渐进&#xff0c;从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进&#xff0c;串联起高性能…

GenColoring - AI 免费涂色页生成器

GenColoring - AI 涂色页生成器上个月发现Nano Banana模型的图片编辑和生成能力都很不错,于是找了找是否有涂色页生成相关的应用,试用了几款后发现GenColoring的效果很满意,比其他的AI涂色页效果要好很多,而且每天…

zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践

本文详细介绍了zkSync作为ETHDenver 2023官方Layer2赞助商的技术活动安排,包括zkEVM开发工作坊、账户抽象黑客松、安全研讨会等核心技术内容,以及基于zkSync Era的食品代币实践案例。在ETHDenver与zkSync Era连接 zk…

linux网站开发电子商务网站数据库建设

这里我们使用Java的线程与锁来解析共享内存模型&#xff1b;做过java开发并且了解线程安全问题的知道&#xff0c;要使某段代码是线程安全的那必须要满足两个条件&#xff1a;内存可见性、原子性&#xff1b; 内存可见性 在JVM规定多个线程进行通讯是通过共享变量进行的&a…

农业科技工作服务站建站模板购物网站设计

http://www.jqdemo.com/525.html转载于:https://www.cnblogs.com/iqiao/p/4255515.html

Squarepoint Challenge (Codeforces Round 1055, Div. 1 + Div. 2)

A. Increase or Smash 题意:你有一个全\(0\)数组,每次可以使得数组全部加上一个数或者使得某些位置变为\(0\)。求变成\(a\)的最小操作数。 最少的操作方案是,先把\(a\)去重后排序,然后从大到小每次加\(a_i - a_{i-…

有做数学题的网站吗网站专题二级页怎么做

第 1 章&#xff1a;Yarn资源调度器 思考&#xff1a; 1、如何管理集群资源&#xff1f; 2、如何给任务合理分配资源&#xff1f; Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而MapReduce等运…

软件工程第一次作业--关于未来规划和自我发展

这个作业属于哪个课程 202501 软件工程这个作业要求在哪里 <软件工程第一次团队作业>这个作业的目标 熟悉git协作和markdown语法,深入了解自己的能力并寻找发展方向学号 102301537一、团队网页 https://github.…

2025太阳能厂家推荐天津龙腾,太阳能热水系统,发电系统,光伏热系统,热水工程系统,预加热系统,中央热水系统,彩图发电系统,分户储水系统,分户计量系统推荐

2025 年国内新能源行业迎来高质量发展新阶段,光热与光伏技术协同应用成为主流趋势,政策持续推动可再生能源在建筑、工业等领域的深度渗透。随着 “双碳” 目标推进,市场对新能源综合解决方案的需求显著提升,不仅要…

集训模拟赛日志

因为要补题,所以开了这个,题目和代码什么存了看文件。 2025.10.1 T1 怎么这么难,好像比 T3,4 做的都久。 T3 是注意到合法区间左右端点递增,然后随便维护一下就行了,甚至可以多测询问子区间然后历史和。 T4 场上…

详细介绍:Nature Electronics:卡内基梅隆大学开放用于多模态皮肤反馈的皮肤贴附式触觉接口

详细介绍:Nature Electronics:卡内基梅隆大学开放用于多模态皮肤反馈的皮肤贴附式触觉接口pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

网站设计 知识产权wordpress page id

3月29日 qt打包APP操作 1 先在windows shell 中下载打包软件Pylnstaller pip install pyinstaller2 先进入py项目所在的位置&#xff0c;再执行以下代码(我用的qt版本是PySide6可以根据自己的情况修改) pyinstaller s02.py --noconsole --hidden-import PySide6.QtXml3 因为…

1688 商品采集 API 调用全流程分享:从准备到实操 - 实践

1688 商品采集 API 调用全流程分享:从准备到实操 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

2025最新推荐化妆品代工公司排行榜:含 OEM / ODM / 一站式服务企业,助力品牌方精准选合作方

当前化妆品行业竞争愈发激烈,品牌方若想在市场中占据优势,选择靠谱的代工公司至关重要。但如今市面上化妆品代工企业数量繁杂,部分企业存在研发能力薄弱、生产标准不达标、服务体系不完善等问题,导致品牌方难以精准…

悟空博弈单元(WBUC)专题研究:面向可能性计算的结构化创新架构

悟空博弈单元(WBUC)专题研究:面向可能性计算的结构化创新架构1 引言:WBUC的诞生背景与范式迁移 在传统人工智能发展面临瓶颈的当下,一种全新的计算架构——悟空博弈单元(Wukong Bargaining Unit Chip,简称WBUC)…

完整教程:奢侈品牌限量版素材管理策略指南

完整教程:奢侈品牌限量版素材管理策略指南2025-10-04 14:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

郑州网站公司哪家好网站定制建设公司

1.网络拓扑图 2.规则 &#xff08;1&#xff09;允许 &#xff08;自己&#xff09;ping通内外网&#xff0c;内外网随便一个pc就可以. &#xff08;2&#xff09; 允许&#xff08;电信&#xff09;ping通内外网&#xff0c;内外网随便一个pc就可以 &#xff08;时间问题不做…

国内有什么网站浙江十大外贸公司

线性表存储结构分为顺序存储、链式存储。 顺序存储的优点&#xff1a; 顺序存储的缺点&#xff1a; 链表就是典型的链式存储&#xff0c;将线性表L &#xff08;a0,a1,a2,........an-1&#xff09;中个元素分布在存储器的不同存储块&#xff0c;成为结点&#xff08;Node&…

做导购网站赚钱吗WordPress相册插件pro

项目展示 三栏布局是一种常用的网页布局结构。 除了头部区域、底部区域外&#xff0c;中间的区域&#xff08;主体区域&#xff09;划分成了三个栏目&#xff0c;分别是左侧边栏、内容区域和右侧边栏&#xff0c;这三个栏目就构成了三栏布局。当浏览器的宽度发声变化时&#x…