2013-11-14 4 views
1

Возможно ли использовать как старую, так и новую 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 устарели?

Надеюсь, это имеет смысл. Пожалуйста, извините наивность.

+0

На какой платформе вы нацеливаетесь? OS X дает вам доступ к функциям OpenGL 3.2, 3.3 и 4.1, если вы передадите профиль совместимости. То есть у вас должен быть контекст основного профиля для этих версий на этой платформе. Эффективно OS X не позволяет вам смешивать и сопоставлять (вы либо получаете 2.1 для устаревшего материала, либо для ядра 3.2+), но многие другие платформы позволяют использовать совместимость с 3.2+. Просто пища для размышлений, если вы когда-нибудь задумываетесь о портировании на OS X - много вещей на OS X *** «разные» ***;) –

ответ

3

Если это OpenGL 3.2 или выше compatibility profile, то да, вы можете смешивать вызовы немедленного режима с правильным рендерингом. Нужно ли вам или нет - другое дело (вы, вероятно, не должны в производственном коде, но это может быть полезно для отладки). С основным профилем вы не сможете использовать устаревшие API.

Обратите внимание, что до 3.2 не было понятий профилей, поэтому в контексте 3.0/3.1 все сложнее (см. Ссылку выше), но на практике использование таргетинга 3.0/3.1 на практике не так много, поскольку почти все 3,0-совместимые аппаратные средства будут в порядке с 3.2.

+0

О, это интересно. Спасибо за сообщение, я проверю ссылку сейчас. – Reanimation

Смежные вопросы