如何从 FBO 获得更清晰的画面?

Posted

技术标签:

【中文标题】如何从 FBO 获得更清晰的画面?【英文标题】:How to get a clearer picture from FBO? 【发布时间】:2015-08-07 09:19:48 【问题描述】:

我是 android 和 opengl 的新手,所以如果这是一个愚蠢的问题,请原谅我。 首先,我创建了一个 GLSurfaceView 并将其宽度设置为 300,高度设置为 500。然后我创建一个 FBO 并将其附加到纹理上。最后,我将纹理绘制到屏幕上。 所以,这是我的问题:如果我想获得更清晰的图片,比如 1000*800。如何做到这一点?

【问题讨论】:

【参考方案1】:

我创建了一个 FBO 并将其附加到纹理

    FBO 是一个渲染目标,这意味着您不能将它附加到纹理上。但是,您可以将带有纹理的对象绘制到 FBO

我想得到更清晰的图片,比如 1000*800

    因此,无论原始图片尺寸是多少,清晰图片的最大尺寸取决于您设置的FBO尺寸

glRenderbufferStorage(GL_RENDERBUFFER,GL_RGBA8, width, height); 使用 RTT(渲染到纹理)

您可以使用 RTT(渲染到纹理)从 FBO 导出纹理

RTT 是一种将渲染目标用作纹理的方法。

例如)

glGenTextures(1, &texture[texture_id].texture_id);
glBindTexture(GL_TEXTURE_2D,texture[texture_id].texture_id);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_width, texture_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture[texture_id].texture_id, 0);

【讨论】:

以上是关于如何从 FBO 获得更清晰的画面?的主要内容,如果未能解决你的问题,请参考以下文章