Возможно ли использовать как старую, так и новую OpenGL в одной программе? Предполагая, что я понял разницу.Смешивание OpenGL 2.0 с современным OpenGL
В моей программе я использовал:
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
Но, к примеру, я могу использовать функцию, которая содержит это нарисовать сетку: (старый)
glBegin(GL_LINES);
glVertex3f(-50, 0, (GLfloat)x);
glVertex3f(50, 0, (GLfloat)x);
glVertex3f((GLfloat)x, 0, -50);
glVertex3f((GLfloat)x, 0, 50);
glEnd();
И функции, подобные этому, для текстуры и визуализации: (новый)
glUseProgram(myShader->handle());
glBindTexture(GL_TEXTURE_2D, texName);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindVertexArray(m_vaoID[0]); //select first VAO
glDrawArrays(GL_TRIANGLES, 0, 6); //draw two triangles
glDisable(GL_BLEND);
glUseProgram(0);
glBindVertexArray(0);
Или использование более новых версий, которые используют функции vao
/vbo
, которые содержат glBegin
/glEnd
устарели?
Надеюсь, это имеет смысл. Пожалуйста, извините наивность.
На какой платформе вы нацеливаетесь? OS X дает вам доступ к функциям OpenGL 3.2, 3.3 и 4.1, если вы передадите профиль совместимости. То есть у вас должен быть контекст основного профиля для этих версий на этой платформе. Эффективно OS X не позволяет вам смешивать и сопоставлять (вы либо получаете 2.1 для устаревшего материала, либо для ядра 3.2+), но многие другие платформы позволяют использовать совместимость с 3.2+. Просто пища для размышлений, если вы когда-нибудь задумываетесь о портировании на OS X - много вещей на OS X *** «разные» ***;) –