我有法线,它们是(x,y,z)作为3个浮点数,我想把它们作为GL_INT_2_10_10_10_REVs打包到一个VBO数组中,以减少图形卡上的内存消耗。有人能提供一个如何在C++ / C#中这样做的例子吗?
OpenGL文档说您可以这样做- 实践
但是,我找不到任何示例说明如何将三个浮点数(可以是正的或负的)放置到单个填充的4字节结构中。
发布于 2014-11-18 14:58:18
请参阅规格,第10.3.8节,“打包顶点数据格式”,第343页:
对于
INT_2_10_10_10_REV,x、y和z分量表示为10位带符号的2的补整数值,w分量表示为2位有符号的2的补整数值。
发布于 2014-11-18 14:55:47
您需要将它们打包到一个类似于以下内容的位字段中:
struct norm{
int a:2;
int Z:10;
int y:10;
int X:10; //order may need to be different
}确保您输入的字段被缩放到-512到511
https://stackoverflow.com/questions/26996740
复制相似问题