Я создал программу, которая использует старые функции (vertexpointer), и я хочу сделать ее быстрее с помощью современных функций.
Я думаю, что я должен создать чистый, новый, но я думал, что могу задать этот вопрос здесь, прежде чем создать новый.
Я попытался подставить одну из функций рисования, а остальные пошли не так!Как создать современную программу без шейдеров?
функция инициализации:
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 func, изменяя функцию func, но не используя шейдеры? Если это avialable, то какова ценность pSlot и nSlot? (Я думал, что 0 и 2, потому что старые gl_Vertex и gl_normal (или что-то в этом роде) в шейдерах используют эти числа)
В современном OpenGL вам необходимо реализовать шейдеры. Об этом нет. – datenwolf
Я знаю, но не тот современный openGL, немного менее современный. Если это абсолютно неувядаемо, то что нового в openGL, что не нужно использовать? – radl
Ну, если все, что вы хотите, не использует немедленный режим, а Vertex Arrays, то вы вряд ли сможете рассказать об этом современном OpenGL. Вершинные массивы доступны уже более 15 лет. Если вы хотите использовать общие атрибуты вершин, то вы также должны указать OpenGL, как обрабатывать эти атрибуты, а это значит писать шейдер. И позже будет современно. – datenwolf