Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL能做到这一点吗?_C++_C_Opengl - Fatal编程技术网

C++ OpenGL能做到这一点吗?

C++ OpenGL能做到这一点吗?,c++,c,opengl,C++,C,Opengl,我正在制作一个绘制形状的应用程序,我用相机在其他地方绘制。基本上,假设我有一个4x3矩形,并希望使用glgetpixels获取1024x768的所有像素,但我的显示器可能不支持该分辨率。如何渲染比显示器更大的内容。我这样做是为了让用户以任意分辨率保存形状的图片。使用glviewport是否会扩展到帧之外,然后我就可以执行glgetpixels了 谢谢我不是OpenGL开发人员,但你绝对可以对比屏幕尺寸更大的纹理进行渲染 谷歌搜索给了我这个答案,也许它很有用:这不是一个彻底的答案,但它应该是有用的

我正在制作一个绘制形状的应用程序,我用相机在其他地方绘制。基本上,假设我有一个4x3矩形,并希望使用glgetpixels获取1024x768的所有像素,但我的显示器可能不支持该分辨率。如何渲染比显示器更大的内容。我这样做是为了让用户以任意分辨率保存形状的图片。使用glviewport是否会扩展到帧之外,然后我就可以执行glgetpixels了


谢谢

我不是OpenGL开发人员,但你绝对可以对比屏幕尺寸更大的纹理进行渲染


谷歌搜索给了我这个答案,也许它很有用:

这不是一个彻底的答案,但它应该是有用的。你在做RTT,渲染到纹理。您将设置一个新的renderbuffer,将其设置为渲染目标,然后使用glGetPixels获取其值。使用以下命令创建渲染缓冲时:

void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
您可以设置它的大小,而不必与屏幕的大小相匹配。希望这有帮助

可以通过定义FBO(帧缓冲区对象)并将纹理附加到它来RTT(渲染到纹理)。选中glBindFramebufferEXT()

绘制场景后,您可以执行glGetTexImage()并为其检索像素


RTT是一种非常成熟且有文档记录的技术。

实际上,这取决于具体情况。我认为FBO不会解决你的问题(不过会有帮助)

我怀疑您正在尝试创建高分辨率的3D场景,例如以300dpi打印。您可能需要超过最大FBO分辨率(4096*4096在一张像样的图形卡上),因此您必须使用平铺渲染

其思想是将最终图像渲染为一组子图像(平铺)


Mesa3d的作者编写了一个很好的库来实现这一点。用法非常简单。

我已经在Windows下完成了。IIRC,基本上将渲染上下文(RC)设置为屏幕外位图(任意尺寸)。