关于glTexImage3D

2024-02-07

对于 3D 纹理,

对于三维纹理,z 索引指的是第三维。 这究竟意味着什么?

对于二维数组纹理,z 索引指的是切片索引。 如果我们有 4 层 2D 纹理,那么如果 z=2,它将引用第二个 2D 纹理切片。?

那么,当我们有目标 GL_TEXTURE_3D 和 GL_TEXTURE_2D_ARRAY 时,除了纹理坐标之间的差异之外,还有什么区别呢?


对于三维纹理,z 索引指的是第三维。这究竟意味着什么?

不管你want它的意思是。

纹理只不过是一个查找表。该查找表的索引称为纹理坐标。纹理坐标的含义完全取决于您打算如何使用它。它可能是太空中的一个位置。它可以是三维函数的 XYZ。可能有很多事情。

不要再将纹理视为图片。

在 2D 纹理中,纹理坐标的 S 和 T 分量表示沿纹理的 X 和 Y 轴访问的距离。如果S为1,则表示右侧。如果S为0,则表示左侧。等等。

3D 纹理和 STP 坐标也是如此。如果P为0,则表示3D纹理的“最远”深度。如果P为1,则表示“最近”的深度。

就您上传的数据而言,它始终基于右手坐标系进行工作。所以底部/左/后是 (0, 0, 0) 点,顶部/右/前是 (1, 1, 1) 点。您在数据中提供的第一个深度层是最远的深度层,下一层是第二远的深度层,依此类推。

对于二维数组纹理,z 索引指的是切片索引。如果我们有 4 层 2D 纹理,那么如果 z=2,它将引用第二个 2D 纹理切片。?

不,它将参考third。从零开始的索引,就像 C/C++ 中的其他所有内容一样。

那么,当我们有目标 GL_TEXTURE_3D 和 GL_TEXTURE_2D_ARRAY 时,除了纹理坐标之间的差异之外,还有什么区别呢?

  1. 二维数组的各层之间没有过滤。如果在 3D 纹理中将 GL_TEXTURE_MAG_FILTER 与 GL_LINEAR 一起使用,它将从 8 个纹素中采样值并在所有 3 个方向上进行插值。如果您使用 2D 数组执行此操作,它将选择一个特定的 Z 层进行采样,并选择该层内的 4 个纹素进行插值。

  2. Mipmap 的工作方式有所不同。 3D 纹理包含 3D 图像。因此,每个 mipmap 也是 3D 的。因此,mipmap 缩减在三维上起作用。如果基础层是 32x32x32,那么下一个 mipmap 将为 16x16x16。

    2D 数组纹理包含2D 图像。它们包含一组 2D 图像,但这是一个实现细节;它只是 2D 图像的集合。每个 2D 图像都有自己的 mipmap,但这些是2D mipmap。因此,2D 数组纹理的每个 mipmap 使用相同数量的图像和其他人一样。因此,如果 2D 数组的基础层使用 32x32 2D 图像,并且这些图像有 32 个,则下一个 mipmap 层将使用 16x16 2D 图像,但会有仍然是32个。

  3. 数组纹理使用整数值作为纹理坐标的第三个分量(要从中获取的数组层)。 3D 纹理对所有三个组件使用标准化值。

简而言之,除了你用来向它们上传数据的功能之外,他们毫无共同点。

通过以下方式了解更多信息查看 OpenGL wiki 上有关纹理的各个页面 http://www.opengl.org/wiki/Texture.

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

关于glTexImage3D 的相关文章

  • 尝试 glUseProgram 时出现 Opengl 错误 1281

    我有什么想法可以调试这个opengl进一步错误 1281 我正在从文件加载源代码 编译 链接 然后尝试检查错误glUseProgram 在我的对象的绘制方法中 log info gl2 glIsProgram shaderProgram t
  • glGenerateMipmap 是否在 sRGB 纹理的线性空间中执行平均?

    OpenGL 3 3 规范似乎没有要求 mipmap 生成在线性空间中完成 我能找到的只有以下内容 派生的 mipmap 数组的内部格式都与 levelbase 数组和派生数组的维度如下 第 3 8 14 节中描述的要求 的内容 派生数组是
  • 着色器/矩阵问题 - 看不到对象

    我试图在屏幕上放置一个立方体并点亮它 我想要在立方体上添加 phong 阴影 当我运行代码时 我可以看到背景图像 但看不到立方体 我相当确定立方体本身是正确的 因为我已经设法用纯色着色器显示它 我已经设法编译着色器程序 但我根本看不到立方体
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • 交错顶点提交如何提高性能?

    我已经阅读并看到了其他问题 这些问题通常都指向将顶点位置和颜色等交错到一个数组中的建议 因为这可以最大限度地减少从 cpu 发送到 gpu 的数据 我不清楚的是 即使使用交错数组 您仍然必须对位置和颜色指针进行单独的 GL 调用 OpenG
  • 没有着色器的 OpenGL

    我已经阅读了一些教程来编写以下代码 唯一的区别是原始教程使用 SDL 而不是 GLEW 我不明白这段代码有什么问题 它可以编译 但我没有看到三角形 教程也没有使用着色器 include
  • 退出 glutFullScreen()

    我不明白为什么当我按 f 时它进入全屏但不退出全屏 在这个方法的开头我已经设置了bool fullscreen false 这是我的切换代码 case f toggle screenmode if fullscreen glutFullSc
  • 哪个对缓存最友好?

    我试图很好地掌握面向数据的设计以及如何在考虑缓存的情况下进行最佳编程 基本上有两种情况我无法完全确定哪个更好以及为什么 是拥有一个对象向量更好 还是拥有对象原子数据的多个向量更好 A 对象向量示例 struct A GLsizei mInd
  • 法线在 openGL 中表现得很奇怪

    我一直在为 openGl 编写一个 obj 加载器 几何体加载得很好 但法线总是混乱的 我尝试在两个不同的程序中导出模型 但似乎没有任何效果 据我所知 这就是将法线放入 GL TRIANGLES 的方法 glNormal3fv norm1
  • glutPostRedisplay 不在循环内工作

    我试图让一个人在 y 轴上跳跃 所以我使用 2 秒的循环 第一秒它应该向下移动并弯曲膝盖 第二秒它应该向上移动 然后在起始位置完成 现在我刚刚开始让这个人在第一秒内跪下并弯曲膝盖 我还没有编写动画的其余部分 问题是 glutPostRedi
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 即使在顶点着色器中使用,glGetUniformLocation()也会返回-1

    我正在尝试用法线渲染一个简单的立方体 我使用以下代码来初始化着色器 void initShader const char vertexShaderPath const char fragmentShaderPath cout lt lt I
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • OpenGL 中连续暂停

    void keyPress unsigned char key int x int y int i switch key case f i 3 while i x pos 3 sleep 100 glutPostRedisplay 上面是在
  • 使用 GLSL 着色器在同一片段着色器中定义的多个子例程类型无法正常工作

    我正在开发一个使用 GLSL 着色器的程序 我编写了 2 种不同的方法来用 2 种不同的方法计算 ADS 环境光 漫反射 镜面反射 着色 为了正确完成这项工作 我使用子例程来使用一种或另一种方法来计算 ADS 着色 这是片段着色器代码的一部
  • NV_path_rendering替代方案[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚观看了 Siggraph 2012 的一个非常令人印象深刻的演示 http nvidia fullviewmedia com sig
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis

随机推荐

  • 如此透明,我无法捕捉到它...使用 Rghost 模拟 Ghostscript 命令,就像在虚拟打印机上一样

    作为一个红宝石新手 我一直在寻找幽灵 你可能会有所帮助 我读了很多书 并被告知对付这些鬼鬼祟祟的家伙的最好方法是使用脚本 ghostscript 我正在尝试执行在虚拟打印机中运行的 Ghostscript 命令 但在 ruby 鞋子 文件的
  • 将大型 DataFrame 输出到 CSV 文件的最快方法是什么?

    对于 python pandas 我发现 df to csv fname 的工作速度约为每分钟 1 百万行 有时我可以将性能提高 7 倍 如下所示 def df2csv df fname myformats sep function is
  • Task.Convert 扩展方法有用还是有隐患?

    我正在为 Google Cloud API 编写客户端库 该库具有相当常见的异步帮助器重载模式 做一些简短的同步工作来设置请求 发出异步请求 以简单的方式转换结果 目前我们正在使用异步方法 但是 就优先级而言 转换await的结果最终会很烦
  • 输入流迭代器和异常

    几天前 我正在研究 istream 迭代器和异常处理 我对此感到好奇 include
  • SQL Server 表中列的最佳命名

    您会选择以下三个选项中的哪一个作为 SQL Server 表中的列名 为什么 年初至今工资 YTDWages YtdWages 跟进 SSN Ssn 社会安全号码 对于第一个 我会使用 WagesYTD 因为年初至今是工资的修正因素 对于第
  • 如果我的部署目标是8.0,我们是否需要为“armv7”和“arm64”编译iOS应用程序?

    我的应用程序支持iOS8 0及以上版本 而且我知道从iOS7开始它的arm64位架构 在这种情况下 我们是否需要编译 armv7 和 arm64 切片的二进制文件 如果我单独编译arm64 我可以减少我的应用程序大小 这是正确的方法吗 请帮
  • Oracle 从表中随机行

    我找到了从 Oracle 表中选择随机行的解决方案 实际上以随机方式对行进行排序 但您只能获取第一行以获得随机结果 SELECT FROM table ORDER BY dbms random value 我只是不明白它是如何工作的 ORD
  • 反应本机 RCTBridgeModule 的初始化

    我想知道向我的 RCTBridgeModule 添加初始化步骤的最佳方法是什么 我当前的解决方案是声明一个必须在 AppDelegate 内部调用的方法 是否有任何其他 更好的解决方案不需要模块的最终消费者向其 AppDelegate 添加
  • 埃拉托斯特尼素数筛法到一百万 C++

    所以我需要有关我的代码的帮助 由于某种原因 当我输入超过 500 000 的数字时 它不断崩溃 这是确切的分配 实现埃拉托色尼筛法并用它来查找所有素数 数量小于或等于一百万 使用结果 证明哥德巴赫猜想对于 4 到 4 之间的所有偶数 100
  • 基于单选按钮选择的 jQuery DatePicker 更新选项

    我试图让 jquery 日期选择器在选择不同的单选按钮时进行更新 div style padding bottom 50px div
  • 使用 WebDriver 处理不受信任的 SSL 证书

    我在使用 Java 中的 webdriver 处理不受信任的 SSL 证书时遇到了困难 我创建了 Firefox 配置文件 如下所示 FirefoxProfile profile new FirefoxProfile profile set
  • InstallShield - 相对文件路径

    如何将文件添加到 InstallShield 组件并指定 InstallShield 项目的相对路径 以便轻松在不同计算机上编译项目 使用免费的 VS 限量版 InstallShield 设置自定义路径看起来不太可能 因此 在只有几个预定义
  • Drupal:在网络表单中的提交按钮上方添加免责声明文本

    有没有一种简单的方法来修改 webform form tpl php 模板以在 Drupal Web 表单中的提交按钮上方显示免责声明文本 我可以在按钮下方添加文本 但不知道如何将按钮与其他元素分开以在它们之间添加文本 即 form ele
  • 使用 @Named 和未命名参数从 Javascript 客户端库进行调用是没有意义的

    我有一个Cloud Endpoints方法看起来像这样 HTTP POST ApiMethod name hylyts insert public Hylyt insertHylyt Named url String url Hylyt h
  • 将bind1st 用于通过引用获取参数的方法

    我有一个这样的结构 struct A void i int i void s string const s 现在当我尝试这个时 bind1st mem fun A i a 0 bind1st mem fun A s a 第一行编译正常 但第
  • 检查 SQL 中的日期是否重叠

    我有一个表 tblBranchTimingEntry BranchEntryID fromDate toDate SundayIn 24 2015 01 01 00 00 00 000 2015 01 31 00 00 00
  • Airflow k8s 运营商 xcom - 握手状态 403 禁止

    当我使用运行 docker 镜像时KubernetesPodOperator在气流版本 1 10 中 一旦 pod 成功完成任务 airflow 就会尝试通过 k8s 流客户端连接到 pod 来获取 xcom 值 以下是我遇到的错误 201
  • 如何设置 RStudio 服务器以在 AWS 上使用 SSL 运行?

    我有兴趣在 AWS 实例上运行 RStudio 服务器并通过 SSL 加密连接访问服务器 我该如何设置 启动一个使用 Ubuntu 作为操作系统的 AWS 实例 以及一个安全组 除了通过端口 22 的 SSH 连接之外 该安全组还具有端口
  • BLE获取广告包中编码的uuid

    我正在尝试获取 ble 设备的 UUID 我遵循 Android 开发人员指南 到目前为止我只能获取设备名称和 RSSI 我试图获取扫描方法中设备的 Uuid 如下所示 public void onLeScan final Bluetoot
  • 关于glTexImage3D

    对于 3D 纹理 对于三维纹理 z 索引指的是第三维 这究竟意味着什么 对于二维数组纹理 z 索引指的是切片索引 如果我们有 4 层 2D 纹理 那么如果 z 2 它将引用第二个 2D 纹理切片 那么 当我们有目标 GL TEXTURE 3