我创建了一个使用旧函数(顶点指针)的程序,我想用现代函数让它更快。
我认为我应该创造一个纯粹的、新的,但我想在我创造一个新的之前我可以在这里问这个问题。
我试图替换其中一个绘图函数,其他的也出错了!
初始化函数:
glGenBuffers(10,vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(float)*vertSize,vert,GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,vbo[1]);
glBufferData(GL_ARRAY_BUFFER,sizeof(float)*normalsSize,normals,GL_DYNAMIC_DRAW);
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);
glEnableVertexAttribArray(pSlot);
glEnableVertexAttribArray(nSlot);
glBindBuffer(GL_ARRAY_BUFFER,vbo[0]);
glVertexAttribPointer(pSlot,3,GL_FLOAT,GL_FALSE,0,0);
glBindBuffer(GL_ARRAY_BUFFER,vbo[1]);
glVertexAttribPointer(nSlot,3,GL_FLOAT,GL_FALSE,0,0);
我对画法没有概念...
我应该使用这些:
glBindAttribLocation(prog, pSlot, "inVer");
glBindAttribLocation(prog, nSlot, "inNorm");
但它需要一个prog
参数。
问题是如果我使用着色器,我应该重写整个程序,如果我错了,请告诉我,如何在不为投影矩阵、模型视图矩阵创建制服的情况下创建着色器,并直接使用矩阵堆栈。
那么我应该使用什么最新的东西来只创建初始化函数来改变绘图函数,而不是使用着色器呢?如果这是可用的,pSlot 和 nSlot 的值是多少?(我认为是 0 和 2,因为着色器中旧的 gl_Vertex 和 gl_normal (或类似的东西)使用这些数字)