C++ opengl glRenderMode未更改模式
我正在尝试使用C++ opengl glRenderMode未更改模式,c++,opengl,C++,Opengl,我正在尝试使用glRenderMode更改选择的渲染模式,下面是我用来执行此操作的代码 glSelectBuffer(size, buffer); int before = glRenderMode(GL_SELECT); std::cout << "before:" << before << std::endl; GLint mode; glGetIntegerv(GL_RENDER_MODE, &mode);i st
glRenderMode
更改选择的渲染模式,下面是我用来执行此操作的代码
glSelectBuffer(size, buffer);
int before = glRenderMode(GL_SELECT);
std::cout << "before:" << before << std::endl;
GLint mode;
glGetIntegerv(GL_RENDER_MODE, &mode);i
std::cout << "mode:" << mode << std::endl;
std::cout << "gl_select:" << GL_SELECT << std::endl;
std::cout << "gl_render:" << GL_RENDER << std::endl;
这告诉我模式没有改变,因为默认情况下它处于GL\u RENDER
编辑:根据@Axalo注释,更改代码以验证它在glRenderMode之前返回0
我还注意到,在上述代码块返回0
之前运行glGetError()
但是下面的代码将再次给我1282
错误代码
glRenderMode(GL_RENDER);
std::cout << glGetError() << std::endl;
glRenderMode(GL_RENDER);
std::coutglGetError()
返回什么?glGetError()
返回1282
确保在glRenderMode
之前返回0,之后返回1282。有关详细信息,请参阅。如果在渲染模式为GL\U SELECT时调用glSelectBuffer,则会生成GL\U INVALID\U操作,或者,如果在至少调用一次glSelectBuffer之前使用参数GL\U SELECT调用glRenderMode。@Jean SimonBrochu您是否清楚,对于不再支持拾取的卡/驱动程序/配置文件,是否也会抛出GL\U INVALID\U操作
?
glRenderMode(GL_RENDER);
std::cout << glGetError() << std::endl;