【发布时间】:2013-11-14 03:41:59
【问题描述】:
是否可以在一个程序中同时使用新旧 OpenGL? 假设我已经理解了其中的区别。
在我使用过的程序中:
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
但是,例如,我可以使用包含它的函数来绘制网格吗:(old)
glBegin(GL_LINES);
glVertex3f(-50, 0, (GLfloat)x);
glVertex3f( 50, 0, (GLfloat)x);
glVertex3f((GLfloat)x, 0, -50);
glVertex3f((GLfloat)x, 0, 50);
glEnd();
还有一个这样的函数,用于纹理和渲染某些东西:(new)
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 上的很多东西“不同” ;)
标签: opengl opengl-4 opengl-2.0