我有一个类来创建一个正方形,但是我正在使用glDrawArrays并且它工作得很好,但是当我尝试使用glDrawElements时它不起作用。
Sprite.h
from flask.ext.admin.actions import action
class MyModelAdmin(ModelAdmin):
def is_action_allowed(self, name):
if name == 'merge' and not user.superadmin:
return False
if name == 'delete' and not user.admin:
return False
return super(MyModelAdmin, self).is_action_allowed(name)
Sprite.cpp
#pragma once
#include <GL/glew.h>
#include <windows.h>
#include <iostream>
#include "shaderloader.h";
//#define USING_INDEX_BUFFER 1
#ifdef USING_INDEX_BUFFER
#define NUM_VERTICES 4
#define NUM_INDICES 6
#else
#define NUM_VERTICES 6
#endif
class Sprite
{
public:
Sprite(float x, float y, float width, float height);
~Sprite();
void init();
void draw();
private:
float _x, _y;
float _width, _height;
GLuint _vao, _vbo, _eao;
#ifdef USING_INDEX_BUFFER
GLfloat _vertices[4][2] = {
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f }
}; // A Quad
GLfloat _color[4][4] = {
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f }
};
GLuint _indices[6] = { 0, 0, 0, 0, 0, 0 };
#else
GLfloat _vertices[6][2] = {
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f },
{ 0.0f, 0.0f }
}; // A Quad
GLfloat _color[6][4] = {
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 0.0f }
};
#endif
};
有人可以向我解释错误是什么吗?
答案 0 :(得分:1)
看起来你没有绑定索引缓冲区。它应该作为glDrawElements
的最后一个参数传递,或者像glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _eao);
方法中那样与调用init
绑定。
此外,您的代码没有错误处理您应该在每次调用后调用glGetError
。