如何在VBO数组中使用GL_INT_2_10_10_10_REV指定法线?

Min*_*neR 1 opengl

我有(x,y,z)法线作为3个浮点数,我想将它们打包成VBO数组GL_INT_2_10_10_10_REVs,以减少显卡的内存消耗.谁能提供一个如何在C++/C#中做到这一点的例子?

OpenGL文档说你可以这样做 - https://www.opengl.org/wiki/Vertex_Specification_Best_Practices

但是,我找不到任何关于如何将三个浮点数(可以是正数或负数)放入单个压缩4字节结构的示例.

rat*_*eak 5

您需要将它们打包在类似于以下内容的位域中:

struct norm{
    int a:2; 
    int Z:10; 
    int y:10; 
    int X:10; //order may need to be different
}
Run Code Online (Sandbox Code Playgroud)

确保您放入的字段缩放-512511