Android OpenGL-渲染到纹理-屏幕的特定区域
我在OpenGL游戏上实现了FBO。和Im渲染什么是渲染到屏幕上的纹理,问题是渲染到纹理从左下角开始。看: 渲染到默认帧缓冲区的内容: 渲染到附加到FBO的纹理的内容: 但我想要渲染到纹理的地方是: 我该怎么做?以下是渲染器Calass(FBO操作在Android OpenGL-渲染到纹理-屏幕的特定区域,android,opengl-es,Android,Opengl Es,我在OpenGL游戏上实现了FBO。和Im渲染什么是渲染到屏幕上的纹理,问题是渲染到纹理从左下角开始。看: 渲染到默认帧缓冲区的内容: 渲染到附加到FBO的纹理的内容: 但我想要渲染到纹理的地方是: 我该怎么做?以下是渲染器Calass(FBO操作在onDrawFrame函数中完成): 无法设置FBO渲染的视口。如果只想绘制与绘制到默认帧缓冲区相同的几何体部分,则应使用视口尺寸的纹理大小: glViewport(0, 0, texW, texH); 完成FBO渲染后,不要忘记将视口设置回
onDrawFrame
函数中完成):
无法设置FBO渲染的视口。如果只想绘制与绘制到默认帧缓冲区相同的几何体部分,则应使用视口尺寸的纹理大小:
glViewport(0, 0, texW, texH);
完成FBO渲染后,不要忘记将视口设置回视图/曲面的适当大小,然后再次开始渲染到默认帧缓冲区
如草图所示,要绘制几何图形的不同(子)部分,您有几个选项:
- 使用模型视图变换平移/缩放几何图形
- 调整投影变换
- 调整视口
glViewport(texW / 4, -texH / 4, texW / 2, texH);
这将定义视口矩形,使其与草图中的橙色虚线矩形大致匹配。您可能需要对这些值进行更多的数学运算以保持纵横比,但这显示了基本思想
glViewport(texW / 4, -texH / 4, texW / 2, texH);