【发布时间】:2018-01-14 12:20:57
【问题描述】:
我正在尝试在我的 Mac 上使用比默认 2.1 更新的 OpenGL 版本,方法是在初始化 GLUT 时使用 GLUT_3_2_CORE_PROFILE。但是,这会导致第一个 OpenGL 操作因无效操作而失败。调用这个第一个函数之前没有报错,没有GLUT_3_2_CORE_PROFILE也没有报错。
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_3_2_CORE_PROFILE | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(500, 500);
glutCreateWindow("Demo");
glutDisplayFunc(displayListener);
errorCheck();
glMatrixMode(GL_PROJECTION);
errorCheck();
errorCheck的内容很简单:
GLenum error;
while ((error = glGetError())) {
std::cout << "OpenGL error " << error << ": " << gluErrorString(error);
}
根据标题,错误 1282 仅由第二次调用 errorCheck 产生:
OpenGL error 1282: invalid operation
版本字符串报告为2.1 ATI-1.51.8,不带GLUT_3_2_CORE_PROFILE,带4.1 ATI-1.51.8。在这个较新版本的 OpenGL 中是否需要进一步初始化?
【问题讨论】:
-
那是因为您的第一个 OpenGL 操作在 3.2 核心配置文件中无效...(您知道什么是 3.2 核心配置文件,还是因为有人说您才设置此选项?应该?)
-
我已将其设置为使用新的着色器功能,所以两者兼而有之