C++ OpenGL 顶点位置从 0.0 开始不变

问题描述 投票:0回答:1

我是 C++ 和 OpenGl 的初学者,并尝试通过本系列学习后者:https://thecherno.com/opengl。当尝试渲染三角形时,第三个顶点位置显示为 0.0 并且无论我将其更改为什么,都不会更改。哪组浮点渲染哪个顶点的顺序也与 YT 系列中的不同。不过这不是问题。

float positions[6] = {
     0.8f, -0.8f,       // btm right corner
    -0.8f, -0.8f,       // btm left corner
     0.0f,  0.8f        // top center    <<---- ISSUE
};

unsigned int buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), positions, GL_STATIC_DRAW);

glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);

glBindBuffer(GL_ARRAY_BUFFER, 0);

Top center vertex displays wrong location.

我在这里发现了同样的问题:OpenGL中的第三个三角形顶点在窗口中渲染时显示为0.0但答案是不同的,这里问的人更进一步并使用了不同/不正确的参数。

我尝试将第三组浮点数更改为不同的数字

{..., 0.0, 1.0};
{..., 0.5, 0.5};
{..., 1.0, 1.0};
并尝试更改一些参数,但无济于事。

c++ opengl
1个回答
0
投票

glVertexAttribPointer
的第二个参数是每个通用顶点属性的组件数量。示例中的顶点只有 2 个分量 (x, y),而不是 3

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);
© www.soinside.com 2019 - 2024. All rights reserved.