Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何在VBO数组中使用GL_INT_2_10_10_10_REV指定法线?_Opengl - Fatal编程技术网

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

Opengl 如何在VBO数组中使用GL_INT_2_10_10_10_REV指定法线?,opengl,Opengl,我的法线是(x,y,z)作为3个浮点数,我想将它们作为GL_INT_2_10_10_10_10_REVs打包到一个VBO数组中,以减少图形卡上的内存消耗。在C++中,有人能提供一个例子吗? OpenGL文档说您可以这样做- 但是,我找不到任何关于如何将三个浮点(可以是正的或负的)放入单压缩4字节结构的示例。您需要将它们打包到一个类似以下内容的位字段中: struct norm{ int a:2; int Z:10; int y:10; int X:10;

我的法线是(x,y,z)作为3个浮点数,我想将它们作为GL_INT_2_10_10_10_10_REVs打包到一个VBO数组中,以减少图形卡上的内存消耗。在C++中,有人能提供一个例子吗? OpenGL文档说您可以这样做-


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

您需要将它们打包到一个类似以下内容的位字段中:

struct norm{
    int a:2; 
    int Z:10; 
    int y:10; 
    int X:10; //order may need to be different
}

确保您输入的字段按比例缩放到
-512
511

您需要将它们打包到一个类似以下内容的位字段中:

struct norm{
    int a:2; 
    int Z:10; 
    int y:10; 
    int X:10; //order may need to be different
}
确保您输入的字段按比例缩放至
-512
511
检查,第10.3.8节,“压缩顶点数据格式”,第343页:

对于
INT_2_10_10_10_10_REV
,x、y和z分量表示为10位有符号2的补码整数值,w分量表示为2位有符号2的补码整数值

检查,第10.3.8节,“压缩顶点数据格式”,第343页:

对于
INT_2_10_10_10_10_REV
,x、y和z分量表示为10位有符号2的补码整数值,w分量表示为2位有符号2的补码整数值


谢谢-那里的图表让事情变得非常简单。谢谢-那里的图表让事情变得非常简单。