Android OpenGl 什么是步幅?
Android OpenGl What is a stride?
正在学习opengl
我遇到了一个函数,例如 drawXXXXXXX,其中一个参数是 stride...
我不知道它的用法,也不知道步幅的意思。
有人能告诉我吗?
Stride 允许顶点数组以规则的间隔访问数组中的所需数据。例如,要仅引用 intertwined 数组中的颜色值,以下调用从数组的开头开始(也可以作为 &intertwined[0] 传递)并向前跳转 6 * sizeof(GLfloat) 字节,这是颜色和顶点坐标值的大小。此跳转足以到达下一个顶点的数据开头。
glColorPointer (3, GL_FLOAT, 6 * sizeof(GLfloat), 交织在一起);
您可以点击以下链接----
https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx
当您想将更多信息传递给顶点着色器而不仅仅是顶点的位置时,您可以使用所谓的缠绕数组。例如:
struct Information {
GLfloat position[3];
GLfloat color[3];
GLfloat texture[2];
};
因此,此结构的一种可能实例化是:
struct Information vertices[] = {
// Positions // Colors // Texture Coords
{{0.5f, 0.5f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f}},
{{0.5f, -0.5f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 0.0f}},
{{-0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}},
{{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f}}
};
为了将其正确传递给着色器属性,您需要准确地告知它如何提取位置信息等。这就是 stride 发挥作用的地方。
跨度是您需要跳转以在此数组上开始新索引的字节数。在本例中为 sizeof(struct Information)
。下图有帮助
有关详细信息,请查看 learnopengl 教程
正在学习opengl
我遇到了一个函数,例如 drawXXXXXXX,其中一个参数是 stride...
我不知道它的用法,也不知道步幅的意思。
有人能告诉我吗?
Stride 允许顶点数组以规则的间隔访问数组中的所需数据。例如,要仅引用 intertwined 数组中的颜色值,以下调用从数组的开头开始(也可以作为 &intertwined[0] 传递)并向前跳转 6 * sizeof(GLfloat) 字节,这是颜色和顶点坐标值的大小。此跳转足以到达下一个顶点的数据开头。
glColorPointer (3, GL_FLOAT, 6 * sizeof(GLfloat), 交织在一起);
您可以点击以下链接----
https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx
当您想将更多信息传递给顶点着色器而不仅仅是顶点的位置时,您可以使用所谓的缠绕数组。例如:
struct Information {
GLfloat position[3];
GLfloat color[3];
GLfloat texture[2];
};
因此,此结构的一种可能实例化是:
struct Information vertices[] = {
// Positions // Colors // Texture Coords
{{0.5f, 0.5f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f}},
{{0.5f, -0.5f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 0.0f}},
{{-0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}},
{{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f}}
};
为了将其正确传递给着色器属性,您需要准确地告知它如何提取位置信息等。这就是 stride 发挥作用的地方。
跨度是您需要跳转以在此数组上开始新索引的字节数。在本例中为 sizeof(struct Information)
。下图有帮助
有关详细信息,请查看 learnopengl 教程