c++ - glDrawElements() Returning GL_INVALID_ENUM in Invalid Circumstances -


all method below draw_data draw square 2 triangles. hence hard coded values. square renders fine, however, spammed

vertex_renderer::draw_vertex_data()gl error: invalid enum.

from code. doing wrong?

my rendering method follows:

bool draw_data(const glsizei start_index = 0, glsizei index_count = 0) {   if (!vbo_id_ || start_index + index_count > index_count_) {     return false;   }    if (index_count == 0) {     index_count = index_count_;   }    gldrawelements(gl_triangles, 6, gl_unsigned_short, 0);    return !gl_errors::what_errors("vertex_renderer::draw_vertex_data()"); } 

gl_errors::what_errors defined follows:

class gl_errors { public:   static bool what_errors(const char * const prefix) {     glenum errorcode;     bool is_error = false;      while ((errorcode = glgeterror()) != gl_no_error) {       switch (errorcode) {       case(gl_invalid_enum): {         std::cout << prefix << "gl error: invalid enum." << std::endl;         is_error = true;       }         break;       case(gl_invalid_value): {         std::cout << prefix << "gl error: invalid value." << std::endl;         is_error = true;       }         break;       case(gl_invalid_operation): {         std::cout << prefix << "gl error: invalid operation." << std::endl;         is_error = true;       }         break;       case(gl_stack_overflow): {         std::cout << prefix << "gl error: stack overflow." << std::endl;         is_error = true;       }         break;       case(gl_stack_underflow): {         std::cout << prefix << "gl error: stack underflow." << std::endl;         is_error = true;       }         break;       case(gl_out_of_memory): {         std::cout << prefix << "gl error: out of memory." << std::endl;         is_error = true;       }         break;       }     }     return is_error;   } }; 

update

glsizei stride = sizeof(verticies_t); pos_id_ = basic_shader_.get_attribute("position"); glenablevertexattribarray(pos_id_); glvertexattribpointer(pos_id_, 2, gl_float, gl_false, stride, 0); gl_extensions::gl_errors::what_errors("1"); 

this culprit, don't see why causing problem. gl_float valid enum.

gldrawelements has 1 condition under in returns gl_invalid_enum (http://www.opengl.org/sdk/docs/man/xhtml/gldrawelements.xml):

gl_invalid_enum generated if mode not accepted value.

this should make suspicious other calls api since gldrawelements call has valid mode. add more check calls made before , see if track down problem.


Comments

Popular posts from this blog

user interface - Python attempting to create a simple gui, getting "AttributeError: 'MainMenu' object has no attribute 'intro_screen'" -

jquery - Common JavaScript snippet to share files on Google Drive, Dropbox, Box.net or SkyDrive -

Android Gson.fromJson error -