在opengl中混合固定功能管道和可编程管道

Fat*_*sis 8 c++ opengl

好的,所以这是我的问题.我的学校使用了一个用于可视化的框架,我一直在尝试将其设置为3D图形.问题是,框架目前只使用固定功能管道来绘制.在没有搞砸的情况下,我一直在尝试解决仍然需要使用固定功能管道的旧代码,并且我一直在设置工具以允许创建着色器和着色器程序.我有一个简单的颜色着色器来编译,我也做了一个测试顶点数组(绿色三角形).

现在当我试图渲染它时,屏幕变黑了.在手之前,有很多2D精灵和什么不在屏幕上移动,但是通过我添加到渲染功能的代码,我发现当我调用glUseProgram时屏幕变黑.如果我注释掉glUseProgram,以及我设置制服和绘画的部分,一切正常.glUseProgram是否禁用固定功能管道?如果是这样的话,无论如何都要重新激活它本身?

Abh*_*sal 13

您使用glUseProgram固定功能管道的那一刻被可编程管道所取代.你不能同时拥有固定功能+可编程管道.例如,假设您的场景包含雾.但是如果你没有在片段着色器中处理它,你将不会在最终输出中看到它.

虽然在你的渲染/绘图功能中你可以做这样的事情

draw
{
  glUseProgram(program);
  // render stuff with shader
  glUseProgram(0)
  // render stuff with fixed pipeline
}
Run Code Online (Sandbox Code Playgroud)