У меня есть два 'std :: vector's, один для индексов и один для вершин, который я заполняю std :: vector.push_back(). Тогда яOpenGL Draw Vertex Buffer Object
glGenBuffers(1, &verticesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, verticesbuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, /*EDITED-->*/vertices.size() * sizeof(vertices[0])/*<--EDITED*/, &vertices[0], GL_STATIC_DRAW);
для создания буферов для каждого, а затем попытаться нарисовать многоугольник с
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBindBuffer(GL_ARRAY_BUFFER, verticesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesbuffer);
glDrawElements(
GL_TRIANGLES,
indices.size(),
GL_UNSIGNED_INT,
&indices[0]
);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
Когда я запускаю программу, ничего не отображается. Я могу заставить его работать с использованием glBegin()/glEnd(), но проиндексированное vbo просто не работает (glGetError() также не дает никаких ошибок). Я даже не знаю, насколько это дистанционно близко к правильному, поскольку я искал бесчисленные учебники и другие вопросы о стеке и пытался много чего исправить. Я должен также упомянуть, что я назвал
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glOrtho(0.0f, windowX, windowY, 0.0f, 0.0f, 1000.0f);
в начале программы, в которой я понятия не имею, если это правильно (как вы можете видеть, я довольно новый в этом материале).
Уверены, что glEnable или glEnableClientState отсутствует? –
Я исправил ошибку, указанную в ответах, но я все еще ничего не вижу. Я пропустил glEnable или glEnableClientState? Вызов метода OpenGL, который я опубликовал в вопросе, это единственные, которые я сделал, связанные с чертежом. – ArcaneEnforcer
. Проблема с этим вопросом заключается в том, что вы не предоставили [MCVE] (http://stackoverflow.com/help/mcve). Мы рассмотрели очевидную причину проблемы с помощью кода, который вы предоставили. Если вы хотите продолжить получать помощь, вам следует опубликовать новый вопрос, включая MCVE. – paddy