如何从 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 获得更清晰的画面?的主要内容,如果未能解决你的问题,请参考以下文章