OpenGL 2.0与现代OpenGL的混合

OpenGL 2.0与现代OpenGL的混合,opengl,opengl-4,opengl-2.0,Opengl,Opengl 4,Opengl 2.0,可以在一个程序中同时使用新旧OpenGL吗? 假设我理解了其中的区别 在我的程序中,我使用了: WGL_CONTEXT_MAJOR_VERSION_ARB, 3, WGL_CONTEXT_MINOR_VERSION_ARB, 2, 但是,例如,我可以使用包含此项的函数来绘制网格:(旧) 还有这样一个函数,用于纹理和渲染某物:(新) 或者使用使用vao/vbo的较新版本会使包含glBegin/glEnd的函数过时吗 我希望这是有道理的。请原谅我的天真 如果是OpenGL 3.2或更高版本,则可以

可以在一个程序中同时使用新旧OpenGL吗? 假设我理解了其中的区别

在我的程序中,我使用了:

WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
但是,例如,我可以使用包含此项的函数来绘制网格:(旧)

还有这样一个函数,用于纹理和渲染某物:(新)

或者使用使用
vao
/
vbo
的较新版本会使包含
glBegin
/
glEnd
的函数过时吗


我希望这是有道理的。请原谅我的天真

如果是OpenGL 3.2或更高版本,则可以将即时模式调用与适当的渲染混合使用。是否应该是另一回事(您可能不应该在生产代码中使用,但它对调试很有用)。有了核心配置文件,您将无法使用不推荐使用的API


请注意,在3.2之前,没有配置文件的概念,因此在3.0/3.1环境下,事情会更复杂(请参见上面的链接),但在实践中,瞄准3.0/3.1并没有多大用处,因为几乎所有支持3.0的硬件都可以使用3.2。

哦,这很有趣。谢谢你的发帖,我现在会查看链接。你的目标是哪个平台?如果您放弃兼容性配置文件,OSX只允许您访问OpenGL 3.2、3.3和4.1功能。也就是说,您必须在这个平台上拥有这些版本的核心概要文件上下文。实际上,OSX阻止了您混合和匹配(您可以获得2.1版本的遗留内容或3.2+核心),但许多其他平台允许您使用3.2+兼容性。如果您曾经考虑过移植到OSX,那么这只是一些值得思考的东西——OSX上的很多东西都是“不同的”;)
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);