[DirectX12学习笔记] 纹理采样

  • 注意!本文是在下几年前入门期间所写(young and naive),其中许多表述可能不正确,为防止误导,请各位读者仔细鉴别。

将漫反射贴图应用到场景里


纹理

DX12里纹理的格式有以下这些
在这里插入图片描述

纹理一般用DDS格式,如果不是DDS可以用微软的texconv工具转换成dds,dds支持mipmap等所以适合在游戏里用,载入dds贴图用DirectX::CreateDDSTextureFromFile12接口,示例代码如下

struct Texture
{
   
	// Unique material name for lookup.
	std::string Name;

	std::wstring Filename;

	Microsoft::WRL::ComPtr<ID3D12Resource> Resource = nullptr;
	Microsoft::WRL::ComPtr<ID3D12Resource> UploadHeap = nullptr;
};

void CrateApp::LoadTextures()
{
   
	auto woodCrateTex = std::make_unique<Texture>();
	woodCrateTex->Name = "woodCrateTex";
	woodCrateTex->Filename = L"../../Textures/WoodCrate01.dds";
	ThrowIfFailed(DirectX::CreateDDSTextureFromFile12(md3dDevice.Get(),
		mCommandList.Get(), woodCrateTex->Filename.c_str(),
		woodCrateTex->Resource, woodCrateTex->UploadHeap));
 
	mTextures[woodCrateTex->Name] = std::move(woodCrateTex);
}

创建接收SRV Table的root parameter

	CD3DX12_DESCRIPTOR_RANGE texTable;
	texTable.Init(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0);

    // Root parameter can be a table, root descriptor or root constants.
    CD3DX12_ROOT_PARAMETER slotRootParameter[4];

	// Perfomance TIP: Order from most frequent to least frequent.
	slotRootParameter[0].InitAsDescriptorTable(1, &texTable, D3D12_SHADER_VISIBILITY_PIXEL);
	···

创建SRV的heap和SRV descriptor

void CrateApp::BuildDescriptorHeaps()
{
   
	//
	// Create the SRV heap.
	//
	D3D12_DESCRIPTOR_HEAP_DESC srvHeapDesc = {
   };
	srvHeapDesc.NumDescriptors = 1;
	srvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
	srvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
	ThrowIfFailed(md3dDevice->CreateDescriptorHeap(&srvHeapDesc, IID_PPV_ARGS(&mSrvDescriptorHeap)));

	//
	// Fill out the heap with actual descriptors.
	//
	CD3DX12_CPU_DESCRIPTOR_HANDLE hDescriptor(mSrvDescriptorHeap->GetCPUDescriptorHandleForHeapStart());

	auto woodCrateTex = mTextures["woodCrateTex"]->Resource;
 
	D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {
   };
	srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
	srvDesc.Format = woodCrateTex
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《DirectX 12 3D游戏开发实战》是一本介绍DirectX 12游戏开发技术的电子书籍。DirectX 12是微软公司推出的一种图形API,用于开发Windows平台上的高性能3D图形应用程序和游戏。 这本书主要面向有一定游戏开发基础的读者,希望能通过实战案例来深入学习DirectX 12技术。书中首先详细介绍了DirectX 12的基础知识,包括API的架构、渲染管线、着色器编程等。然后,通过一系列实际案例,教授读者如何使用DirectX 12来构建完整的3D游戏。 在实战部分,书中涵盖了很多方面的内容,例如几何体的创建和管理、材质和纹理的处理、光照和阴影的实现、相机和观察矩阵的应用等等。通过这些案例,读者可以了解并掌握DirectX 12的重要概念和技巧,从而能够自己开发出优秀的3D游戏。 此外,书中还介绍了一些高级主题,如多线程渲染、延迟渲染、GPU计算等,帮助读者进一步提高游戏的性能和效果。同时,书中还讨论了一些常见的问题和挑战,如内存管理、资源加载、性能优化等,帮助读者更好地应对实际开发中的各种情况。 总之,《DirectX 12 3D游戏开发实战》是一本实用性很强的教程,对于想要深入了解和掌握DirectX 12技术的游戏开发者来说,是一本值得阅读和实践的书籍。 ### 回答2: 《DirectX 12 3D游戏开发实战PDF》是一本介绍使用DirectX 12进行游戏开发的实用资料。DirectX是由微软开发的一套多媒体技术,包括与计算机图形和声音相关的API(应用程序接口),用于游戏和多媒体应用程序的开发。 本书主要介绍了DirectX 12的基础知识和技术,并提供了大量实战案例和代码示例,帮助读者理解和掌握DirectX 12游戏开发的要点。其中,3D游戏的开发是该书的重要内容之一。 在这本书中,读者将学习到如何使用DirectX 12创建具有逼真图形效果的3D游戏。内容涵盖了3D图形的基本概念、着色器编程、模型加载与渲染、纹理贴图、光照和阴影效果等方面。通过学习这些内容,读者将能够掌握构建高质量和流畅的3D游戏所需的核心技术。 此外,本书还介绍了实时渲染技术、物理引擎、碰撞检测和基于DirectX的图形优化等高级主题。这些内容将帮助读者进一步提升游戏性能和开发效率。 《DirectX 12 3D游戏开发实战PDF》适合对游戏开发和计算机图形学感兴趣的读者阅读。不仅能够帮助初学者入门,还适用于有一定编程基础的读者进一步提升自己的技能。无论是学生、游戏开发者还是爱好者,都可以通过这本书了解和掌握现代游戏开发所需的技术和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值