【发布时间】:2014-12-09 18:20:41
【问题描述】:
我正在使用带有 GLFW 的 OpenGL 3.3。 问题是 GL_LINE_STRIP 和 GL_LINE LOOP 给出相同的结果。
这是二维坐标数组:
GLfloat vertices[] =
{
0, 0,
1, 1,
1, 2,
2, 2,
3, 1,
};
属性指针:
// Position attribute 2D
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), (GLvoid*)0);
glEnableVertexAttribArray(0);
最后:
glDrawArrays(GL_LINE_STRIP, 0, sizeof(vertices)/4);
顶点着色器:
#version 330 core
layout (location = 0) in vec2 position;
layout (location = 1) in vec3 color;
out vec3 ourColor;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main()
{
gl_Position = projection * view * model * vec4(position, 0.0f, 1.0f);
ourColor = color;
}
片段着色器:
#version 330 core
in vec3 ourColor;
out vec3 color;
void main()
{
color = vec3(ourColor);
}
颜色属性。已禁用(线条为黑色且可见)
有什么想法吗?
【问题讨论】:
-
如果透明颜色为黑色,线条颜色为黑色,我可以看到
LINE_LOOP和LINE_STRIP给出相同的结果。也不要盲目假设sizeof(float) == 4(我看到你在vertexAttrib电话中做得很好) -
另外,如果行为相同,如何它们的行为完全一样? IOW 哪一个看起来坏了?
-
GLfloat 总是 4 字节 afaik,GL_LINE_STRIP 就像 GL_LINE LOOP 一样
-
GLfloat至少 4个字节。 -
有效!非常感谢