gpt4 book ai didi

iphone - 如何使用 GLshorts 表示法线坐标或纹理坐标?

转载 作者:行者123 更新时间:2023-12-03 20:22:33 25 4
gpt4 key购买 nike

许多关于提高 iPhone 游戏性能的建议都围绕着向 GPU 发送更少的数据。明显的建议是尽可能使用 GLshorts 而不是 GLfloat,例如顶点、法线或纹理坐标。

使用 GLshort 作为法线坐标或纹理坐标时有哪些具体细节?使用 GLshort 时是否可以表示 0.5 的 GLfloat 纹理坐标?如果是这样,你该怎么做?它只是 SHRT_MAX/2 吗?也就是说,当使用 GLshort 纹理坐标时,GLfloat 的 0 到 1 范围是否映射到 0 到 SHRT_MAX?

法线呢?我总是使用 GLfloats 创建法线并将它们标准化为单位长度。当使用 GLshort 作为法线时,您是否将非标准化向量发送到 GPU?如果是这样,何时以及如何标准化?除以所有分量除以 SHRT_MAX?

最佳答案

OpenGL ES 1.1规范指出,使用整数类型时,法线会自动恢复到 [-1:1] 或 [0:1] 范围。(完整的公式列表参见规范表2.7)

(for shorts)   n_x = (2c +1)/(2^16 − 1)

所以你不需要依赖 GL_NORMALIZE 来获取法线(并且可以使用你想要的任何技巧)。

但是纹理坐标不会缩放([0:1]范围之外的值完全有效......)。如果您想应用这样的缩放,最好的选择是使用纹理坐标矩阵,但代价相当大。

glMatrixMode(GL_TEXTURE);
glLoadMatrix(matrix_that_does_conversion_based_on_type);

关于iphone - 如何使用 GLshorts 表示法线坐标或纹理坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412169/

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