gpt4 book ai didi

c++ - glDrawArrays 在 GL_TRIANGLES 模式下不绘制任何东西

转载 作者:行者123 更新时间:2023-11-30 02:45:09 27 4
gpt4 key购买 nike

我的问题是 glDrawArray 命令停止工作。我已经编写了一些使用该命令的程序。但是现在,我不知道为什么它不起作用。

但我仍然可以使用 GL_LINES 而不是 GL_TRIANGLES 在屏幕上画线。

这是我的代码:

#include "Mesh.h"
#include <iostream>

Mesh::Mesh()
{
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

glGenBuffers(1, &vbo);
size = 0;
}

void Mesh::AddVertices(const Vertex vertices[], int length)
{
size = length;

glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
}

void Mesh::Draw()
{
glEnableVertexAttribArray(0);

glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, Vertex::SIZE * 4, 0);

glDrawArrays(GL_TRIANGLES, 0, size);

glDisableVertexAttribArray(0);
}

Draw 总是由 Game 类调用。还有我的顶点类:

#include "Vertex.h"

Vertex::Vertex(glm::vec3 pos)
{
this->pos = pos;
}

Vertex::Vertex(float x, float y, float z)
{
pos = glm::vec3(x, y, z);
}

glm::vec3 Vertex::GetPos() const
{
return pos;
}

void Vertex::SetPos(glm::vec3 pos)
{
this->pos = pos;
}

最佳答案

sizeof(vertices)sizeof(void*),因为在 C 或 C++ 中,函数参数中的数组会衰减为指针。您应该使用第二个参数中提供的 length,如果它的大小以字节为单位。

关于c++ - glDrawArrays 在 GL_TRIANGLES 模式下不绘制任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24732076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com