古い関数(頂点ポインタ)を使ったプログラムを作ったのですが、最新の関数で高速化したいと思っています。
純粋な新しいものを作るべきだと思いますが、新しいものを作る前にここで質問できると思いました。
描画機能の 1 つを代用しようとしましたが、他の機能もうまくいきませんでした。
初期化関数:
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
パラメータを取ります。
問題は、シェーダーを使用する場合はプログラム全体を書き直さなければならないことです。間違っている場合は、射影行列、モデルビュー行列のユニフォームを作成せずにシェーダーを作成し、行列スタックを直接使用する方法を教えてください。
では、シェーダーを使用せずに、init 関数を作成して描画関数を変更するだけで使用する必要がある最新のものは何ですか? これが利用可能な場合、pSlot と nSlot の値は? (シェーダーの古い gl_Vertex と gl_normal (またはそのようなもの) がこれらの数値を使用するため、0 と 2 を考えました)