全屏纹理 iPhone OpenGL ES

2023-12-31

我知道 iPhone 上的 OpenGL 纹理需要是 2 的幂,OpenGL 2.0 也是如此吗?如果我有一个尺寸为 320 x 480 的图像并且想要将其全屏绘制,是否有任何可能的方法可以使用 OpenGL 来完成此操作。

Thanks


NPOT 纹理are在 PowerVR SGX 硬件上受支持,但有限制。 NPOT 纹理不能使用 mipmap,必须是 2D(无立方体贴图或 3D 纹理)并且必须使用GL_CLAMP_TO_EDGE用于两个维度的纹理包裹; OpenGL ES 2.0 和 ES 1.1 中的扩展默认支持此功能GL_APPLE_texture_2D_limited_npot

对于 ES 1.1,您可以在运行时检查此扩展是否存在于此代码中:

const char* extensions = (char*) glGetString(GL_EXTENSIONS);
bool npot = strstr(extensions, "GL_APPLE_texture_2D_limited_npot") != 0;

由于这只存在于 SGX 而不是 MBX,请注意依赖 NPOT 纹理支持将限制您使用较新的 SGX 设备。当然,依赖 ES 2.0 也会做同样的事情,所以如果这是您的预期目标,那么 NPOT 支持是一个没有实际意义的问题,您可以继续使用 NPOT 纹理。

这是一个替代解决方案,可让您继续使用 ES 1.1 并保留完整的设备支持。将 320x480 纹理放入 512x512 中,用其他背景图块、字形或其他将同时绘制的纹理填充空白(以避免多个glBindTexture调用),然后使用我最喜欢的 ES 1.1 扩展之一,GL_OES_draw_texture,将 320x480 部分快速复制到视口上:

int rect[4] = {0, 0, 480, 320};
glBindTexture(GL_TEXTURE_2D, texBackground);
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, rect);
glDrawTexiOES(0, 0, z, 480, 320);

侧边栏:OpenGL ES 2.0 规范本身没有指定对 NPOT 纹理的任何限制;除非我弄错了,否则 Apple 正在施加限制 - 当然,在 ES 1.1 世界中,NPOT 支持根本不存在,因此它是一个补充。

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

全屏纹理 iPhone OpenGL ES 的相关文章

随机推荐

  • 使用 WaitForMultipleObjects 等待多个线程

    我正在使用WaitForMultipleObjects函数等待多个线程的完成 但我做错了什么 因为结果不是预期的 请参阅此示例代码 type TForm1 class TForm Memo1 TMemo Button1 TButton pr
  • teamcity 构建项目无法启动 MSBuild.exe。路径中存在非法字符

    我正在尝试在 teamcity 中构建一个项目 它将执行 TFS 的签出 并且文件位于构建服务器本地 如果我在服务器上手动运行构建命令 它会起作用 C WINDOWS Microsoft NET Framework v4 0 30319 m
  • 如何在 Ruby 中修复这个多行正则表达式?

    我的 Ruby 正则表达式在多行模式下无法正常工作 我正在尝试将 Markdown 文本转换为 Redmine 中使用的 Textile eque 标记 问题出在我用于转换代码块的正则表达式中 它应该找到任何以 4 个空格或制表符开头的行
  • Bitbucket git 凭证(如果已通过 Google 注册)

    我在 bitbucket org 上有一个帐户 是通过使用我的 Google 帐户注册创建的 现在 每次登录时 我只需单击 使用 Google 登录 即可 如何从 git 命令行访问我的存储库 它要求我输入用户名和密码 我有用户名 但没有密
  • python multiprocessing - 将子进程日志发送到在父进程中运行的GUI

    我正在编写的一些分析代码之上构建一个接口 用于执行一些 SQL 并处理查询结果 我想向用户公开此分析代码中围绕许多事件的日志记录 因为分析代码运行时间相当长 并且因为我不希望 UI 阻塞 所以到目前为止我已经通过将分析函数放入其自己的线程中
  • 类型“boolean”不可分配给类型“ObservableInput<{}>”

    我正在开发 Angular 6 项目 我正在为我的routeGuards 使用 canDeactivate 并使用弹出窗口来显示路线留下消息 但问题出在我的价格表守卫服务上悬停 flatMap isAllow gt Error 类型 isA
  • 让文本穿过 div

    好的 这是一项调查 其中 div 是图表 就像您在 Facebook 上看到的那样 基本上 div style border 1px solid black width 300px div style width 100px This te
  • 通过 google play 更新应用程序时下载内容?

    所以这是我第一次发送我的应用程序的更新 我不知道通过 google play 更新应用程序时实际会发生什么 以下是一些我无法得到答案的问题 实际更新了什么以及这个过程如何工作 即更新完成时的方法或回调 共享首选项文件会发生什么情况 名称值对
  • 属性或枚举或静态最终

    当涉及到在名称 值对中声明预定义常量时 我 一直在 java util Properties enums 或具有 public static final 值的单独类之间随机选择 为了供将来参考 我需要一些关于采取哪种方法的指南 Thanks
  • MSDN 上的 101 LINQ 示例中的这段代码是否存在错误? (更新:已修复)

    NOTE 查理 卡尔弗特 https stackoverflow com users 253576 ccalvert下面回复说 101 个 LINQ 示例现已更新为正确的代码 MSDN Visual C 开发人员中心有一个名为101 个 L
  • 任务中的基本容器已退出

    我正在尝试使用 aws ecs 配置我的 docker hub 映像 我在运行任务时创建了存储库 集群和任务 但在任务退出 1 中收到错误作为基本容器 在尝试获取确切的错误详细信息时 我发现我的一些变量显示为未配置 找到错误所附的屏幕截图
  • 如何删除旧的订阅

    我有 3 年的订阅 我只想删除 2 年未使用的旧订阅和孤儿订阅 下面的脚本显示了所有订阅 计划 创建时间 上次执行时间 对于缺乏归属表示歉意 您可以使用它来查找要转储的订阅位置 并使用 Kavins 指示手动删除它们 SSRS SUbscr
  • 如何使用 sympy 定义条件函数?

    我希望能够定义一个表达式 该表达式获取定义变量的所有值并将表达式计算为0当它没有定义时 与此类似 import numpy as np import sympy as sp def expr k1 k2 x y sp symbols x y
  • VB.NET - 计算两个日期之间的天数(排除)

    我正在尝试计算两个日期之间的天数 不包括星期六 and Sundays 到目前为止我已经写了这段代码 Dim startDay As Integer Dim endDay As Integer Dim days As Integer Dim
  • Elastic Search 匹配短语查询 -> 输出不可预测

    示例文档 id 5 title Quick Brown fox jumps over the lazy dog genre fiction Mapping movies mappings properties genre type text
  • Jupyter Notebook 和之前的输出

    有什么方法可以在不重新运行程序的情况下查看以前的输出吗 例如 我让机器学习算法过夜 早上我就得到了结果 但是 由于某种原因 当我在原始代码上按 Enter 时 它再次开始运行 原始输出消失了 输出存在于特定的上下文中 即单元 并且只要内核仍
  • 什么事件捕获 DataGridViewCell 中组合框中的值更改?

    我想在 a 中的值发生更改时处理该事件ComboBox in a DataGridView cell 有的是CellValueChanged事件 但直到我单击事件内的其他位置后 该事件才会触发DataGridView 一个简单的ComboB
  • ggplot:同时通过“geom_rect”排列因子顺序并突出显示区域

    首先 指定分类变量顺序的方法ggplot是重新排序它的级别data frame 其次 要在我们可以使用的任何绘图上突出显示一个区域geom rect 这里需要注意的是 不要将数据传递给geom rect 否则它不允许我们设置alpha 因此
  • 在 Haskell 中操作元组

    我是 Haskell 的新手 我有一个关于元组的问题 难道就没有遍历元组的方法吗 我知道使用列表进行遍历非常容易 但是如果输入作为元组给出 是否没有办法像使用列表一样检查整个元组 如果不是这种情况 是否可以将元组中的值提取到列表中并以这种方
  • 全屏纹理 iPhone OpenGL ES

    我知道 iPhone 上的 OpenGL 纹理需要是 2 的幂 OpenGL 2 0 也是如此吗 如果我有一个尺寸为 320 x 480 的图像并且想要将其全屏绘制 是否有任何可能的方法可以使用 OpenGL 来完成此操作 Thanks N