mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-23 04:35:28 +08:00
Fix #63
This commit is contained in:
@@ -306,7 +306,7 @@ layout (std140) uniform ExampleBlock
|
||||
|
||||
尝试自己计算出偏移量,把它们和表格对比,你可以把这件事当作一个练习。使用计算出来的偏移量,根据std140布局规则,我们可以用`glBufferSubData`这样的函数,使用变量数据填充缓冲。虽然不是很高效,但std140布局可以保证在每个程序中声明的这个uniform块的布局保持一致。
|
||||
|
||||
在定义uniform块前面添加layout (std140)声明,我们就能告诉OpenGL这个uniform块使用了std140布局。另外还有两种其他的布局可以选择,它们需要我们在填充缓冲之前查询每个偏移量。我们已经了解了分享布局(shared layout)和其他的布局都将被封装(packed)。当使用封装(packed)布局的时候,不能保证布局在别的程序中能够保持一致,因为它允许编译器从uniform块中优化出去uniform变量,这在每个着色器中都可能不同。
|
||||
通过在uniform块的定义前面添加`layout (std140)`声明,我们告诉OpenGL这个uniform块使用了std140布局。我们还有其它的另外两种布局可以选择,但它们都需要我们在填充缓冲之前查询每个的偏移量。前面我们已经见过的**共享**布局(Shared Layout),还有一种则是**紧凑**布局(Packed Layout)。当我们使用紧凑布局的时候,不能保证这个布局在所有程序间能够保持一致(即并非共享),因为它允许编译器从uniform块中优化出去uniform变量,而具体优化出去的是哪个则根据着色器的不同会有所变化。
|
||||
|
||||
## 使用uniform缓冲
|
||||
|
||||
|
Reference in New Issue
Block a user