2013-08-24 43 views
1

我的問題是不能正確繪製簡單的平面; 我不知道爲什麼我開始時出現錯誤:無效的操作1282. 有人可以檢查嗎?OpenGL 4 GLSL 1282無效操作簡單代碼

我的變量: GLfloat *tab爲verticies平面 int *tab2爲indecies

這是我的init funcion:

// kolor tła - zawartość bufora koloru 
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 

// wczytanie shaderów i przygotowanie obsługi programu 
program=LoadShaders("shader.vert","shader.frag"); 

//Vertexy 
//VertexArrayID; 
glGenVertexArrays(1, &VertexArrayID); 
glBindVertexArray(VertexArrayID); 

//Verticies; 
glGenBuffers(1, &Verticies); 
glBindBuffer(GL_ARRAY_BUFFER, Verticies); 
glBufferData(GL_ARRAY_BUFFER,foo*sizeof(GLfloat), tab, GL_STATIC_DRAW); 

unsigned int m_ciezarkow[]={0,1,0}; 


//Indicies 
glGenBuffers(1,&Indeksy); 
glBindBuffer(GL_ARRAY_BUFFER,Indeksy); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int)*size, tab2, GL_STATIC_DRAW); 



glUseProgram(program); 

pos_cam=glGetUniformLocation(program, "camera"); 
pos_color=glGetUniformLocation(program, "_color"); 

glUseProgram(0); 

這是我畫的功能:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glUseProgram(program); 
//my camera 
glUniformMatrix4fv(pos_cam,1,GL_FALSE,&cam.matrix()[0][0]); 

//Verticies 
glEnableVertexAttribArray(0); 
glBindBuffer(GL_ARRAY_BUFFER, Verticies); 
glVertexAttribPointer(0, 3 , GL_FLOAT, GL_FALSE, 0, (void*)0); 

//Masa 
//glEnableVertexAttribArray(1); 
//glBindBuffer(GL_ARRAY_BUFFER, Masa); 
//glVertexAttribPointer(0, 3 , GL_FLOAT, GL_FALSE, 0, (void*)0); 

//Indicies 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,Indeksy); 

glDrawElements(GL_TRIANGLES,size,GL_UNSIGNED_INT,(void*)0); 
glUseProgram(0); 
glDisableVertexAttribArray(0);` 
+1

我會開始找出哪條線給你的錯誤。如果您將調用移至'glGetError()'到代碼中的不同位置,您是否可以找出確切的線? – user1118321

+0

第一次循環繪製函數後出現此錯誤。 –

回答

4

有錯這裏:

//Indicies 
glGenBuffers(1,&Indeksy); 
glBindBuffer(GL_ARRAY_BUFFER,Indeksy); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int)*size, tab2, GL_STATIC_DRAW); 

您綁定IndeksyGL_ARRAY_BUFFER,但它應該是GL_ELEMENT_ARRAY_BUFFER。使用您的代碼,可能有0個綁定爲索引緩衝區,該目標的glBufferData將失敗,並顯示GL_INVALID_OPERATION

+1

我愛你男人! 我失去了2個小時的生命,可能因爲早上起牀了, –