Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
C++ OpenGL-GL\u LINE\u STRIP的作用类似于GL\u LINE\u循环_C++_Opengl - Fatal编程技术网

C++ OpenGL-GL\u LINE\u STRIP的作用类似于GL\u LINE\u循环

C++ OpenGL-GL\u LINE\u STRIP的作用类似于GL\u LINE\u循环,c++,opengl,C++,Opengl,我使用OpenGL3.3和GLFW。 问题在于,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 * s

我使用OpenGL3.3和GLFW。 问题在于,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);
}
颜色属性。已禁用(线条为黑色且可见)


你知道吗?

你只有5对浮点数,所以5个顶点。数组的总大小是10个浮点数的4倍,所以是40个字节


你的计数公式,40/4等于10
sizeof(array)/(sizeof(array[0])*维度)
将是正确的等式

如果透明颜色为黑色,线条颜色为黑色,我可以看到
line\u LOOP
line\u STRIP
给出相同的结果。另外,不要盲目地假设
sizeof(float)==4(我看到您在
vertexAttrib
调用中做得很好),如果它们的行为相同,它们的行为到底是如何的?看哪一个看起来坏了?GLfloat总是一次4个字节,GL_LINE_STRIP的行为就像GL_LINE LOOP
GLfloat
至少是4个字节。它可以工作!谢谢