我的问题是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类调用。还有我的Vertex类:
#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;
}
最佳答案
我找到了解决方案。初始化OpenGL函数时,我不小心写了glFrontFace(GL_CW)
而不是glFrontFace(GL_CCW)
。
关于c++ - glDrawArrays在GL_TRIANGLES模式下不绘制任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24732076/