本文介紹了OpenGL錯誤驗(yàn)證失?。何唇壎旤c(diǎn)數(shù)組對象的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
網(wǎng)格類不再綁定Vao,但它仍然不起作用。一切似乎都應(yīng)該井然有序。我綁定了Vao,然后是VBO,我創(chuàng)建了著色器,但隨后由于未綁定Vao而導(dǎo)致驗(yàn)證失???多么?我做網(wǎng)狀物的時候就把它綁起來了,永遠(yuǎn)不會解開它。我不明白這個節(jié)目。我做錯了什么
public boolean create(float vertices[]) {
vCount=vertices.length/3;
//generate vao id
vao=glGenVertexArrays();
glBindVertexArray(vao);
vbo=glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vbo);
//static draw stores data in GPU
//GL_DYNAMIC_DRAW stores it in ram to be more accessible
glBufferData(GL_ARRAY_BUFFER, vertices, GL_STATIC_DRAW);//pass vertex data
/*glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(0, 3, GL_FLOAT, false, VERTEX_SIZE * 4, 0);
glVertexAttribPointer(1, 2, GL_FLOAT, false, VERTEX_SIZE * 4, 12);*/
glVertexAttribPointer(0,3,GL_FLOAT,false,0,0);//allocates 3 spaces for x,y,z floats
return true;
}
簡單的繪制函數(shù)。
public void draw() {
glDrawArrays(GL_TRIANGLES,0,vCount);
}
我應(yīng)該不需要為相機(jī)/對象轉(zhuǎn)換創(chuàng)建緩沖區(qū)或其他東西,對嗎?此方法僅初始化IS
glUniformMatrix4fv(uniOProjectionMat,true,obj);
with my shader
#version 330 core
layout(location=0) in vec3 position;
uniform mat4 worldTransform;
uniform mat4 objectTransform;
uniform mat4 projection;
void main(){
gl_Position=projection*worldTransform *
對象變換*ve4(位置,1);
)
opengl
glValidateProgram
檢查程序是否可以在當(dāng)前推薦答案狀態(tài)下執(zhí)行。因?yàn)楹诵呐渲梦募舷挛闹袥]有標(biāo)準(zhǔn)的頂點(diǎn)數(shù)組對象,所以您必須在驗(yàn)證程序之前綁定命名的VAO。
在程序驗(yàn)證之前綁定您的Vao,或者不要調(diào)用unBindVAO()
。根本不需要解綁VO。
這篇關(guān)于OpenGL錯誤驗(yàn)證失敗:未綁定頂點(diǎn)數(shù)組對象的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,