gpt4 book ai didi

iphone - 我应该为 OpenGL ES 中的纹理坐标使用什么数据类型?

转载 作者:行者123 更新时间:2023-12-03 20:59:51 24 4
gpt4 key购买 nike

我注意到 OpenGL 文档中纹理坐标的默认数据类型是 GLfloat,但我看到的由经验丰富的 iPhone 开发人员编写的大部分示例代码都使用 GLshort 或 GLbyte。这是一种优化吗?

GLfloat vertices[] = {    
// Upper left
x1, y2,
// Lower left
x1, y1,
// Lower right
x2, y1,
// Upper right
x2, y2,
};
glTexCoordPointer(2, GL_FLOAT, 0, iconSTs);

对比

GLbyte vertices[] = {    
// Upper left
x1, y2,
// Lower left
x1, y1,
// Lower right
x2, y1,
// Upper right
x2, y2,
};
glTexCoordPointer(2, GL_BYTE, 0, iconSTs);

最佳答案

我不建议在 iPhone 上使用字节/短坐标,特别是如果您是初学者。只需使用 float 。它们占用更多空间,但直到您需要以最大速度渲染数千个顶点时,这并不重要。另外,您必须更改纹理矩阵以用整数纹理坐标表示小数值,否则它们将仅指向纹理角 (0, 1)。这会增加代码的复杂性。

我相信它们本身并不会更快,至少在 iPhone 上是这样。它们可能会更快一些,因为在一次调用中读取数千个它们所需的内存带宽较小。如果您编写第一个引擎,则不值得进行此优化。除非您是一位非常有经验的引擎编码员并且打算将硬件推向极限,否则这永远不会成为代码中的主要瓶颈,带来的性能优势可以忽略不计。

对于其他一些 OGL-ES 设备,情况可能有所不同,因为 OpenGL pipline 部分在软件中实现,并且某些设备缺乏 FPU,因此无法快速处理 float 。这就是为什么一些 Android 游戏试图完全避免 float 类型(2009 年)。

关于iphone - 我应该为 OpenGL ES 中的纹理坐标使用什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com