c++ - 有没有什么方法可以生成渲染缓冲区对象和帧缓冲区对象而不在 openGL 中创建窗口?
问题描述
我的 opengl 程序创建一个 glwindow,绘制图像,捕获像素并保存为图像文件。它适用于我的笔记本电脑,但是当我在非显示 linux ssh 服务器中运行程序时出现 freeglut 错误(无法打开显示。)。我相信“glCreateWindow”会发生该错误,但我无法在不创建窗口的情况下生成 Renderbuffer 或 Framebuffer。
glutInit(&myargc, myargv);
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH );
glutInitWindowPosition( 50, 50 );
glutInitWindowSize( WIDTH, HEIGHT );
main_window = glutCreateWindow("__Window__"); // CreateWindow
glewInit();
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glBindTexture(GL_TEXTURE_2D, 0);
LOG(INFO) << "0";
glGenRenderbuffers(1, &depth);
LOG(INFO) << "1";
glBindRenderbuffer(GL_RENDERBUFFER, depth);
如果我在非显示 linux ssh 服务器中运行此代码,错误消息会显示“freeglut:无法打开显示”。
如果我跳过创建窗口,
// main_window = glutCreateWindow("__Window__"); // skip this code
LOG 输出只有 0 则发生分段错误,这意味着它无法在没有窗口的情况下生成渲染缓冲区。
解决方案
推荐阅读
- python - Itertools.accumulate to find union of intervals (convert from reduce to accumulate)
- c# - 使用 string.Insert 使用 ForEach 循环格式化日期字符串
- php - 显示带有时区的正确日期的帖子
- c# - 如何访问 ExecuteResultAsync 中的 ViewDataDictionary?
- python - 需要使用理解将代码包装在单行中
- excel - 运行时错误 91:对象变量或未设置块变量 - 为什么我不能对工作表中的行进行排序?
- opencv3.0 - 添加解析的浮点数后,NSNumber 的 NSMutableArray 为 nil
- r - R闪亮单选按钮中的开关输出
- sequence - 在给定的(邪恶的)序列中重新组织 PDF 的页面——PyPDF2 的尝试
- sql - 从多行中获取最短时间