论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
从零开始写C++3D游戏引擎(开发情况VS2022+OpenGL)之十 ...
从零开始写C++3D游戏引擎(开发情况VS2022+OpenGL)之十一 从打光到材质 细 ...
九天猎人
金牌会员
|
2025-3-16 05:44:10
|
显示全部楼层
|
阅读模式
楼主
主题
949
|
帖子
949
|
积分
2847
写在篇前的话
作为一个曾经在代码堆里面苦苦挣扎的萌新,困惑的事情在于库,各种依赖,包换文件,链接库,纠结于代码的作用意义。尤其在3D引擎开发的问题上,很多人都被各种困难给拦阻,放弃了在3D渲染,3D游戏引擎上大涨鸿图的机会。
当然关于3D游戏引擎的教程已经汗牛充栋,但是大部分的教程都是由过来人写的,代码中的逻辑与实现,在过来人眼中天然且简单,在初学者眼里却是艰涩繁杂,因此从一个初学者的角度来写一篇关于如果使用OpenGL库开发3D游戏引擎的文章,尤其侧重于一行行代码的实现,对于初学者将是莫大的资助!
有感于此,本人准备以本身的方式以飨读者,节流各人的时间。
本片中全部的源码都可以在这个CSDN资源中找到:3D模子添加材质的源代码,代码表明拜见金沙阳博客文章《从零开始写C++3D游戏引擎(开发情况VS2022+OpenGL)之十一从打光到材质细嚼慢咽逐条读代码系列》资源-CSDN文库
希望各人多多点赞支持,各人的支持就是我积极更新的动力!
前情回首
按照惯例,先回首一下之前的内容,在之前的博文里面,已经先容了如何使用OpenGL在VS2022开发情况里面,如何改变摄像头的操作,如何使用光线达到漫反射镜面反射的效果。这些内容都可以访问我的博客文章进行回首。
[!TIP]
从零开始写3D游戏引擎(开发情况VS2022+OpenGL)之八点五 细嚼慢咽3D引擎的代码实现_使用opengl来写渲染引擎-CSDN博客
从零开始写3D游戏引擎(开发情况VS2022+OpenGL)之九 如何编写摄像机使用镜头 慢条斯理的保姆包教会系列-CSDN博客
从零开始写3D游戏引擎(开发情况VS2022+OpenGL)之九点五 编写运动摄像机镜头的源代码 细嚼慢咽逐条读代码系列-CSDN博客
从零开始写3D引擎(开发情况VS2022+OpenGL)之十 如何给3D图形添加光源设置漫发射镜面放射 保姆包教会系列-CSDN博客
学习目标
本篇的目标就是要给3D模子拥有质感,也就是有了材质属性,效果图如下:
源文件有哪些?它们的关系如何?
在本人给出的资源文件中,一共有11个文件,分别是:
着色器小程序(zprograms):3.1.light_cube.fs;3.1.light_cube.vs;3.1.light_cube.fs;3.1.light_cube.vs。此中,
.fs文件是片断着色器小程序,
.vs文件是顶点着色器小程序。在后文,我们会一个一个解说它们内部的源码以及相互之间的关系。
头文件:camera.h;shader_m.h;stb_image.h。这三个头文件,我们将一个一个讲明他们的来历和作用。
源文件,程序主体文件:materials.cpp。该文件,将是本文描述的重点
程序设置文件:chapter11.vcxproj;chapter11.vcxproj.filters;chapter11.vcxproj.user。里面有本工程的设置信息,事实上,几乎全部的附文件包,链接库信息都可以在里面找到。本文的第一个目标就是要讲清楚这里面XML文件的作用,理解了这些,各位在使用VS2022开发设置文件的时候将节省大量时间。
工程文件的解说
在本博客附属的资源中,工程设置文件一共有三个,分别是chapter11.vcxproj;chapter11.vcxproj.filters;chapter11.vcxproj.user,这三个文件都可以用记事本或者nodepad++打开并修改,不外我们更加要关心的是第一个文件chapter11.vcxproj,里面的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{5c49ea2e-3d95-4766-ab3b-129387fbf142}</ProjectGuid>
<RootNamespace>ConsoleApplication1</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>chapter11</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
九天猎人
金牌会员
这个人很懒什么都没写!
楼主热帖
C# 使用流读取大型TXT文本文件 ...
从洞察到决策,一文解读标签画像体系建 ...
袋鼠云平台代码规范化编译部署的提效性 ...
Flink的API分层、架构与组件原理、并行 ...
JVM
SpringBoot(八) - 统一数据返回,统一 ...
打穿你的内网之三层内网渗透 ...
Redis命令手册
微服务(三)之负载均衡(服务端和客户端) ...
锂电池基于DW01组成的过充电、过放、短 ...
标签云
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表