D3D11:从 6 个图像创建立方体贴图

2024-01-11

如何在 D3D11 中从 6 个图像创建立方体贴图?我发现的所有示例仅使用一个 .dds。具体来说,如何上传立方体纹理的各个面?


它的工作原理如下:

D3D11_TEXTURE2D_DESC texDesc;
texDesc.Width = description.width;
texDesc.Height = description.height;
texDesc.MipLevels = 1;
texDesc.ArraySize = 6;
texDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
texDesc.CPUAccessFlags = 0;
texDesc.SampleDesc.Count = 1;
texDesc.SampleDesc.Quality = 0;
texDesc.Usage = D3D11_USAGE_DEFAULT;
texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
texDesc.CPUAccessFlags = 0;
texDesc.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE;

D3D11_SHADER_RESOURCE_VIEW_DESC SMViewDesc;
SMViewDesc.Format = texDesc.Format;
SMViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE;
SMViewDesc.TextureCube.MipLevels =  texDesc.MipLevels;
SMViewDesc.TextureCube.MostDetailedMip = 0;

D3D11_SUBRESOURCE_DATA pData[6];
std::vector<vector4b> d[6]; // 6 images of type vector4b = 4 * unsigned char

for (int cubeMapFaceIndex = 0; cubeMapFaceIndex < 6; cubeMapFaceIndex++)
{   
    d[cubeMapFaceIndex].resize(description.width * description.height);

    // fill with red color  
    std::fill(
        d[cubeMapFaceIndex].begin(), 
        d[cubeMapFaceIndex].end(), 
        vector4b(255,0,0,255));

    pData[cubeMapFaceIndex].pSysMem = &d[cubeMapFaceIndex][0];// description.data;
    pData[cubeMapFaceIndex].SysMemPitch = description.width * 4;
    pData[cubeMapFaceIndex].SysMemSlicePitch = 0;
}

HRESULT hr = renderer->getDevice()->CreateTexture2D(&texDesc, 
    description.data[0] ? &pData[0] : nullptr, &m_pCubeTexture);
assert(hr == S_OK);

hr = renderer->getDevice()->CreateShaderResourceView(
    m_pCubeTexture, &SMViewDesc, &m_pShaderResourceView);
assert(hr == S_OK);

这将为 CubeMap 创建六个“红色”图像。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D3D11:从 6 个图像创建立方体贴图 的相关文章

  • WJ的Direct3D简明教程2:Render-To-Texture

    转载请注明 来自http blog csdn net skyman 2001 Rendering to a texture is one of the advanced techniques in Direct3D On the one h
  • cuda学习笔记之异步并行执行

    异步函数使得主机端与设备端并行执行 控制在设备还没有完成前就被返回给主机线程 包括 kernel启动 以Async为后缀的内存拷贝函数 device到device内存拷贝函数 存储器初始化函数 比如cudaMemset cudaMemset
  • DirectX11 顶点和顶点布局

    顶点和顶点布局 1 如何描述顶点 5 5 1节已经讲过 在Direct3D中 顶点由空间位置和各种附加属性组成 Direct3D可以让我们灵活地建立属于我们自己的顶点格式 换句话说 它允许我们定义顶点的分量 要创建一个自定义的顶点格式 我们
  • 一门新的编程语言ecere简介

    ecere 简称eC 是加拿大学者jerome历时十二年开发的一门编译型编程语言 拥有C 项目的性能 Java的跨平台性以及Python语法的简洁性 ecere在C语言的基础上加入了面向对象的支持 但与C Java相比 它更像是一个C语言的
  • 没有找到 d3dx11.lib?

    我使用 Windows 8 Visual Studio 2012 C 11 和 Direct3D 11 进行开发 我包含这样的 Direct3D 库 pragma comment lib dxgi lib pragma comment li
  • MATLAB 中的纹理映射

    我有 3D 空间中的点及其相应的 2D 图像点 如何利用 3D 点制作网格 然后对网格形成的三角形面进行纹理处理 请注意该函数trisurf您最初尝试使用的返回一个句柄patch目的 如果你看一下 FaceColor 补丁对象的属性 你可以
  • 在c#中捕获游戏屏幕截图最快的方法?(每秒超过20张图像)

    如何快速截取整个游戏屏幕 大约每秒 20 30 次 我想将它们转换为视频 1 我尝试过 WMEncoder 结果是 WMEncoder 只能使用一组预配置的编解码器以视频格式 wma 捕获屏幕和屏幕区域 29 fps 最佳编码结果 WMEn
  • 如何使用纹理贴图绘制曲面

    我想绘制一个带有纹理贴图的表面 但条件不是 理想 的 首先让我们解释一下我所拥有的 我在网格中有一组点 7000 它们是图像坐标 这一点并不能定义完美的平方 它不是网格 为了回答这个问题 我们假设我们有 9 分 让我们用图像来说明一下 X
  • Direct3D11:翻转 ID3D11Texture2D

    我执行 Direct3D 后台缓冲区的捕获 当我下载像素时 图像帧沿其垂直轴翻转 复制资源或创建目标时是否可以 告诉 D3D 翻转帧ID3D11Texture2D 我是这样做的 我将帧缓冲区复制到其中的纹理是这样创建的 D3D11 TEXT
  • 如何离线安装适用于 Windows 10 的 D3D11 SDK Layers

    当我在 VS2015 中调试 D3D 应用程序时 出现以下错误 D3D11CreateDevice Flags 0x2 were specified which require the D3D11 SDK Layers for Window
  • Opengl 和 Webgl:从附加到当前帧缓冲区的纹理中采样

    我有一个带有两个纹理的帧缓冲区t0 and t1随附的 在第一遍中 我使用多个片段着色器输出渲染它们 在第二遍之前 我执行以下操作 打开仅具有一个输出的着色器 Bind t1到纹理单元 调用 glDrawBuffers 禁用写入t1的附件
  • Android:OpenGL ES 2.0 - 纹理始终为黑色

    我试图使用顶点和片段着色器在 OpenGL ES 2 0 Android 4 0 4 Galaxy Nexus 中显示一个简单的纹理作为全屏背景 最终结果应该是在那里显示相机图像 但首先 文件中的简单纹理就足够了 我测试了很多东西 并且在我
  • 在 OpenGL 上映射 Wavefront .obj 纹理顶点

    一位艺术家给了我所有 3D 模型 让我导出为 obj 和 mtl 以便我可以使用 OpenGL 渲染它 但我不明白为什么纹理顶点大于 1 有时甚至是负值 看一下这个例子 vn 0 000717425 0 00106739 0 0099169
  • SlimDX:在 Visual Studio 2010 中无法看到 Direct3D 调试输出

    我已经安装了 2010 年 6 月的 SDK 在 DirectX 控制面板中启用调试运行时 将调试输出级别设置为最大 更多 启用非托管代码调试 结果 Direct3D 的调试输出丢失 但是 如果我从外部启动应用程序并使用 dbgview e
  • 如何使用 D3DPT_TRIANGLESTRIP 基元类型在 DirectX 中绘制两个分离的矩形

    我是 DirectX 新手 我正在尝试使用以下命令在一个场景中绘制两个矩形D3DPT TRIANGLESTRIP 一个矩形没问题 但两个矩形则完全不同 是的 我可以使用用 绘制的四个三角形来绘制它们D3DPT TRIANGLELIST原始类
  • THREE.js 几何图不出现

    接下来我在自定义几何体上加载图像映射 它代表上图中的棕色几何形状 var aqua ground geo new THREE Geometry var top0 new THREE Vector3 aqua ground geo x NEG
  • D3D11坐标系

    我的一些旧代码最终出现了一堆令人讨厌的黑客行为 以使事情 正确 工作 在移动物体和相机方面 例如必须采用 std sin yaw 而不是 std sin yaw 在实现在线其他地方找到的方程时 通常会让一切变得混乱 在许多情况下都达到了追踪
  • 将纹理复制到纹理

    我已经完成了 2 个使用共享资源的程序 在 SlimDX 和 DirectX10 上运行 一个程序将在 3D 网格上显示共享纹理 第二个程序将加载图像作为纹理 到目前为止 每次从新图像更新纹理时 我都需要传递共享处理 现在 有没有一种方法可
  • DirectX/OpenGL 中的三角形绘制顺序

    3D API 中绘制三角形的顺序是否保证与其在索引缓冲区中的顺序相同 例如 如果我在一次绘制调用中有两个重叠的三角形 并且禁用深度测试 那么第一个或第二个三角形最终是否可见 或者我是否需要发出单独的绘制调用以确保第二个三角形出现在第一个三角
  • 超出 CreateConstantBufferView 处虚拟地址的末尾

    我正在遵循 使用 DirectX12 进行游戏编程 ch 6 代码 但在 ID3DDevice CreateConstantBufferView 中 我发现 D3D12 错误 D3D12 错误 ID3D12Device CreateCons

随机推荐

  • OpenXML 替换所有文档中的文本

    我有下面的一段代码 我想用 NewText 替换文本 Text1 这样就可以了 但是 当我将文本 Text1 放入表格中时 该表格不再适用于表格内的 Text1 我想在所有文档中进行此替换 using WordprocessingDocum
  • initWithFrame 未调用,但 awakeFromNib 已调用

    我正在尝试对 NSOutlineView 进行子类化 这是我的代码 OutlineViewSublcas h import
  • 什么是uWSGI主模式?

    如果我只运行一个应用程序 在主模式下运行 uWSGI 有什么好处 主模式是否提供进程管理优势 使其比通过 Upstart 运行更可靠 upstart只是一个进程管理器 uWSGI master可以访问worker的很多内存区域 事实上恰恰相
  • 实体框架 - SaveChanges() 未获取生成的身份密钥

    我在我的项目中使用实体框架 这真是一场噩梦 我有一个 SQL 数据库 有一个名为 Form 的表 Form有一个ID 它是PK和Identity 它是自动增加的 这次我这样做 Dim form as int32 Dim dbform As
  • 如何使用 Altair 按日期时间值突出显示条形

    如同 https altair viz github io gallery bar chart with highlighted bar html https altair viz github io gallery bar chart w
  • 调用模板函数时出现意外输出

    下面的代码是我正在经历的 cpp 测验的一部分 include
  • pandas concat 列ignore_index 不起作用

    我正在尝试列绑定数据框 例如 R 的cbind 确实 并且与熊猫有问题concat as ignore index True似乎不起作用 df1 pd DataFrame A A0 A1 A2 A3 B B0 B1 B2 B3 D D0 D
  • 使用剪贴板的 C# 多线程应用程序

    我正在开发一个多线程应用程序 我面临着必须使用剪贴板的问题 我正在使用 Qlikview API 并且我需要将表格复制到 Excel 中 问题是我认为会发生什么是这样的 在线程 1 上 我打开 QW 文档并复制表格 在将其粘贴到 Excel
  • 我应该在我的应用程序中使用 iOS 4 新功能吗?为什么?

    我正在更新我的一个应用程序 但我遇到了一个困境 在我想添加 iOS 4 独特功能的地方 我别无选择 只能仅针对支持的设备实现它们 这里没有困境 困境是当我有两种方法可以达到相同的效果时 一种是 旧方式 另一种是 新方式 一个很好的例子是使用
  • 在 Git Bash 中显示 SSH 密钥文件

    如何查看 Git Bash 中使用了哪个 SSH 密钥文件 我尝试了 git config get all 但收到错误消息 错误 参数数量错误 用法 git config 选项 使用哪个 SSH 密钥不是由 Git 决定的 而是由 SSH
  • psql: FATAL: 用户 Windows 8 密码验证失败

    我在 Windows 上安装了 postgresql 安装时它要求为该帐户创建一个用户 这在我的计算机上创建了一个名为 postgres 的新 Windows 用户 我也为其创建了一个密码 现在我想在 Windows 命令行上运行 psql
  • fork 的 Maven 项目使用什么版本标签?

    我经常不得不 fork 一个使用 Maven 的 Java 项目 通常在 github 上 当我分叉项目并进行更改时 我通常希望将版本剪切到我自己的私有 但在互联网上 maven 存储库 因此 我的自定义版本的版本标签应该是什么的问题 我做
  • 动态加载多个 JS 文件并在所有文件准备就绪时触发回调

    我有几个 JS 和 CSS 文件 需要使用 JavaScript 动态附加到 DOM 所描述的方法here https www nczonline net blog 2009 07 28 the best way to load exter
  • C# 中的私有静态变量和线程安全

    我的一位同事在多线程 C 应用程序中编写了以下代码 public class1 private static partialClass var1 new partialNonStaticClass public static method1
  • java.lang.SecurityException:发送短信:uid 10282 没有 android.permission.SEND_SMS

    我的应用程序不断崩溃并出现以下错误代码 java lang SecurityException Sending SMS message uid 10282 does not have android permission SEND SMS
  • 内核死亡并退出代码 1(VS 代码)

    这是我在 vs code 的交互窗口中运行代码时显示的错误消息 C Users rohit AppData Roaming Python Python38 site packages traitlets traitlets py 2195
  • NSTextFinder + 以编程方式更改 NSTextView 中的文本

    我有一个 NSTextView 我想使用查找栏 文本可以选择 但不可编辑 我以编程方式更改文本视图中的文本 当 NSTextFinder 在文本更改后尝试选择下一个匹配项时 此设置可能会崩溃 NSTextFinder 似乎保留了增量匹配的过
  • 当我改变页面时cookie消失

    PHP 我在我的login php页面中以这种方式设置cookie setcookie cookie id id 我打印 cookie 并且看到正确的值 但是当我使用以下命令更改页面时 header login url 我丢失了所有 coo
  • Oracle - 功能不起作用

    Oracle 功能不起作用 所以我不知道我做错了什么 我已经花了几个小时了 非常感谢一些帮助 所以基本上我有两张桌子 一张叫做student这是一个学生名单student no是主键 另一个表称为enrol其中基本上包含了学生注册的课程列表
  • D3D11:从 6 个图像创建立方体贴图

    如何在 D3D11 中从 6 个图像创建立方体贴图 我发现的所有示例仅使用一个 dds 具体来说 如何上传立方体纹理的各个面 它的工作原理如下 D3D11 TEXTURE2D DESC texDesc texDesc Width descr