Linux 没有glut的OpenGL着色器?

Linux 没有glut的OpenGL着色器?,linux,opengl,shader,glut,Linux,Opengl,Shader,Glut,我无法在非glut创建的OpenGL上下文中使用GLTools股票着色器 我正在学习《超级圣经》第五版中的OpenGL。提供的GLShaderManager和gltMakeCube(来自GLTools)允许我在glut创建的窗口中渲染一些立方体(GLBatch::Draw()),使用Superbible中的以下代码: gltSetWorkingDirectory(values[0]); glutInit(&count, values); glutInitDisplayMode(GLUT

我无法在非glut创建的OpenGL上下文中使用GLTools股票着色器

我正在学习《超级圣经》第五版中的OpenGL。提供的
GLShaderManager
gltMakeCube
(来自GLTools)允许我在glut创建的窗口中渲染一些立方体(
GLBatch::Draw()
),使用Superbible中的以下代码:

gltSetWorkingDirectory(values[0]);

glutInit(&count, values);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(1200, 400);

glutCreateWindow("Test");
我正试图从这个程序中删除glut代码,下面的示例创建一个窗口并将上下文附加到它。(我在运行Ubuntu)

我已经成功地创建了一个窗口和一个上下文,并成功地调用了glClearColor来更改窗口的背景色。然而,我的立方体不再被绘制。上面链接的示例程序工作正常,但它似乎没有使用着色器,而是依赖调用
glColor3f
glVertex3f
来构建立方体


为什么我使用GLTools的股票着色器进行渲染的技术无法在非glut创建的窗口/上下文中工作?

当调用
glutInitWindowSize()
时,它是否设置了
glViewport()
?它是否也可以调用
glOrtho()
glFrustum()
?如果是这样的话,那就是建立一个坐标系,如果你想让其他的东西都画出来,你需要在你自己的代码中模拟这个坐标系。我会试着画一个1个单位乘1个单位的正方形或其他东西,看看在没有glut的情况下设置后你的比例是多少,看看这与使用glut设置相比如何。着色器与固定函数与即时模式(glVertex调用)与顶点数组(glDrawArray调用)是不同的。