gpt4 book ai didi

ios - OpenGL ES 2.0 视口(viewport)

转载 作者:行者123 更新时间:2023-11-29 10:59:38 26 4
gpt4 key购买 nike

我在使用 OpenGL ES 2.0 和命令 Viewport(x,y,width,height) 时遇到问题。我正在使用渲染函数在 UIView 中显示纹理(WxH)

- (void)render
{
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0,0,window_width,window_height);
_openglViewer.render();
[_context presentRenderbuffer:GL_RENDERBUFFER];
}

问题是纹理只有在从纵向模式启动时才能正常显示窗口宽度 = 768,窗口高度 = 1004.0。对于这样的尺寸,旋转后它可以正常工作。当我设置依赖于 window_width = self.frame.size.width 和 window_height = self.frame.size.height 并在横向模式下旋转或从它开始时 - 纹理显示的宽度大于屏幕尺寸,高度小于屏幕尺寸。用“边界”替换“框架”并不能解决问题。

最佳答案

不幸的是,涉及的不仅仅是 glViewport(它将规范化的设备坐标映射到窗口坐标)。您可能需要更新您的投影矩阵以反射(reflect)宽高比的变化(相机现在看到自上而下的情况减少了,但有更宽的左右角度(或相反,取决于设备方向)。

所以基本上用这些新的设备值重新计算投影矩阵(宽高比已经改变)。

关于ios - OpenGL ES 2.0 视口(viewport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com