为什么存在glVertexAttribPointer的不同变体? [英] Why do different variations of glVertexAttribPointer exist?

查看:410
本文介绍了为什么存在glVertexAttribPointer的不同变体?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

glVertexAttribPointer()
glVertexAttribIPointer()
glVertexAttribLPointer()

据我所知,可以使用glVertexAttribPointer代替其他两个.

As far as I know, glVertexAttribPointer can be used instead of the other two.

如果是,为什么存在IL变体?

If so, why do the I and L variations exist?

推荐答案

我在OpenGL Insights中了解了这一点

I read about this in OpenGL Insights

使用glVertexAttribPointer()时,所有内容都将转换为浮点数. glVertexAttribIPointer()仅可以公开存储整数的顶点数组,而glVertexAttribLPointer()仅用于双精度.

When using glVertexAttribPointer() everything gets cast to a float. While glVertexAttribIPointer() can only expose vertex arrays that store integers and glVertexAttribLPointer() is only for doubles.

经此 OpenGL.org页面上的引用确认:

对于glVertexAttribPointer,如果将normalized设置为GL_TRUE,它将 指示将以整数格式存储的值映射到 范围[-1,1](对于有符号值)或[0,1](对于无符号值) 当它们被访问并转换为浮点数时.否则, 值将直接转换为浮点数,而无需规范化.

For glVertexAttribPointer, if normalized​ is set to GL_TRUE​, it indicates that values stored in an integer format are to be mapped to the range [-1,1] (for signed values) or [0,1] (for unsigned values) when they are accessed and converted to floating point. Otherwise, values will be converted to floats directly without normalization.

对于glVertexAttribIPointer,仅整数类型GL_BYTE GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT, GL_UNSIGNED_INT值始终保留为整数 值.

For glVertexAttribIPointer, only the integer types GL_BYTE​, GL_UNSIGNED_BYTE​, GL_SHORT​, GL_UNSIGNED_SHORT​, GL_INT​, GL_UNSIGNED_INT​ are accepted. Values are always left as integer values.

glVertexAttribLPointer指定通用顶点属性的状态 与用64位声明的着色器属性变量关联的数组 双精度组件.类型必须是GL_DOUBLE.索引,大小, 和步幅的行为与glVertexAttribPointer和 glVertexAttribIPointer.

glVertexAttribLPointer specifies state for a generic vertex attribute array associated with a shader attribute variable declared with 64-bit double precision components. type​ must be GL_DOUBLE​. index​, size​, and stride​ behave as described for glVertexAttribPointer and glVertexAttribIPointer.

这篇关于为什么存在glVertexAttribPointer的不同变体?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆