Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 从GLSL顶点着色器检索数据_Opengl_Glsl_Shader_Vertex Shader - Fatal编程技术网

Opengl 从GLSL顶点着色器检索数据

Opengl 从GLSL顶点着色器检索数据,opengl,glsl,shader,vertex-shader,Opengl,Glsl,Shader,Vertex Shader,我有很多透明原语,我想在画图之前进行排序,但是为了得到Z坐标,排序键,我在软件中执行了由硬件中的顶点着色器执行的所有变换 我想我可以通过从着色器中检索Z坐标,并使用它在下一帧中对基本体进行排序来优化该过程。由于原语的顺序预计不会在帧之间发生剧烈变化,因此应提供足够公平的顺序。那么,我想知道如何从顶点着色器中获取一批Z坐标?有可能吗?您可以使用从顶点着色器输出到缓冲区的数据,稍后可以读取,但我认为这不会给您带来太多好处,您应该分析哪种解决方案最好(实验)。您可以使用从顶点着色器输出到缓冲区的数据,

我有很多透明原语,我想在画图之前进行排序,但是为了得到Z坐标,排序键,我在软件中执行了由硬件中的顶点着色器执行的所有变换


我想我可以通过从着色器中检索Z坐标,并使用它在下一帧中对基本体进行排序来优化该过程。由于原语的顺序预计不会在帧之间发生剧烈变化,因此应提供足够公平的顺序。那么,我想知道如何从顶点着色器中获取一批Z坐标?有可能吗?

您可以使用从顶点着色器输出到缓冲区的数据,稍后可以读取,但我认为这不会给您带来太多好处,您应该分析哪种解决方案最好(实验)。

您可以使用从顶点着色器输出到缓冲区的数据,稍后可以读取,但我认为这不会给您带来太多好处,您应该分析哪种解决方案最好(实验)。

而不是单独查看每个基本体,您应该根据连接网格的边界体积进行排序。如果您在Kd或BSP树等空间细分结构中组织几何体,则这种排序或多或少是免费的。然后,排序问题被简化为在正确的方向上实现树的遍历——基本上,它归结为深度优先遍历,分支以近距离遍历←→远时尚。

您应该根据连接网格的边界体积进行排序,而不是单独查看每个基本体。如果您在Kd或BSP树等空间细分结构中组织几何体,则这种排序或多或少是免费的。然后,排序问题被简化为在正确的方向上实现树的遍历——基本上,它归结为深度优先遍历,分支以近距离遍历←→远时尚。

我想实现一些剔除算法,如BSP,但由于游戏的特殊几何结构,这很难实现:我使用4个可用顶点坐标来模拟4-D超球体表面的空间。我不知道这些已知的技术如何能在这种情况下使用。哈哈,我投了令人惊叹的一票。(平方)到原点的欧几里德距离适用于任何尺寸,这可能是您的排序标准。顺便说一句,确保您完全理解弄乱W组件的含义。这是有目的的。好吧,W只是为了完成应用4x4 modelview矩阵的1x4列矩阵。由于我正在仔细处理modelview矩阵,并且在应用投影矩阵之前,我已经将4-D投影到3-D(并将W设置回1),所以一切都应该正常。我打算在投影后使用Z进行排序,所以我们回到了三维。我想实现一些剔除算法,如BSP,但由于这个游戏的特殊几何结构,这很难:我使用4个可用的顶点坐标来模拟4-D超球体表面的空间。我不知道这些已知的技术如何能在这种情况下使用。哈哈,我投了令人惊叹的一票。(平方)到原点的欧几里德距离适用于任何尺寸,这可能是您的排序标准。顺便说一句,确保您完全理解弄乱W组件的含义。这是有目的的。好吧,W只是为了完成应用4x4 modelview矩阵的1x4列矩阵。由于我正在仔细处理modelview矩阵,并且在应用投影矩阵之前,我已经将4-D投影到3-D(并将W设置回1),所以一切都应该正常。我打算在投影后使用Z进行排序,所以我们回到了三维。