Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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++ 如何绘制目标纹理大于屏幕分辨率的帧缓冲区?_C++_Opengl - Fatal编程技术网

C++ 如何绘制目标纹理大于屏幕分辨率的帧缓冲区?

C++ 如何绘制目标纹理大于屏幕分辨率的帧缓冲区?,c++,opengl,C++,Opengl,我正在尝试使用帧缓冲区绘制纹理。纹理的大小大于我的窗口大小。绘制完成后,屏幕外部的所有内容都将被切断 我已尝试将视口设置为适合纹理分辨率,并禁用剪刀测试(默认情况下禁用,我不使用)。我在某个地方读到,我可能需要RenderTarget,但我不明白为什么或如何在没有深度或模具缓冲区的情况下使用它。使用帧缓冲区对象进行屏幕外绘图。无论如何,您都不应该使用基于窗口的帧缓冲区来渲染希望重用的图片(纹理、保存到文件等),因为窗口的帧缓冲区及其内容可能在任何时候都无效(即使是在完成渲染和调用glReadPi

我正在尝试使用帧缓冲区绘制纹理。纹理的大小大于我的窗口大小。绘制完成后,屏幕外部的所有内容都将被切断


我已尝试将视口设置为适合纹理分辨率,并禁用剪刀测试(默认情况下禁用,我不使用)。我在某个地方读到,我可能需要RenderTarget,但我不明白为什么或如何在没有深度或模具缓冲区的情况下使用它。

使用帧缓冲区对象进行屏幕外绘图。无论如何,您都不应该使用基于窗口的帧缓冲区来渲染希望重用的图片(纹理、保存到文件等),因为窗口的帧缓冲区及其内容可能在任何时候都无效(即使是在完成渲染和调用
glReadPixels
之间的很短时间内).

原来我的错误是在显示生成的纹理时,而不是在其上绘制时


感谢所有帮助过你的人。

你想实现什么?你能提供更多的信息或图片来说明吗?附加到FBO的纹理/渲染缓冲区有多大?我有一些用于tilemap渲染的纹理。我正在尝试将所有瓷砖组合成一个纹理,以便在绘制整个地图时仅使用一个纹理。到目前为止,我没有使用renderbuffer。我的纹理分辨率约为4000x4000。我是opengl新手,所以我的行话可能是错误的。我正在为此生成一个帧缓冲区对象(使用glGenFramebuffers),并绘制到该fbo。我的目标纹理仍然被切断。我有什么误解吗?@Moon4u:在渲染到FBO之前,您是否也设置了视口?视口处于图形状态。如果在windows调整大小/重塑事件处理程序中有
glViewport
调用,则说明您做得不对。是的,我确实在绘图调用之前设置了视口。@Moon4u:然后提供失败的代码。一个合适的。