gpt4 book ai didi

ios - OpenGL 更改坐标设置

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:55:00 24 4
gpt4 key购买 nike

我在 iPhone 上的 OpenGL ES 中设置了一个正交屏幕,我想更改当前设置的坐标系。

我以为这样就可以了。

glOrthof(0, self.view.frame.size.width, 0, self.view.frame.size.height, -1, 1);
glViewport(0, 0, self.view.frame.size.width, self.view.frame.size.height);

但是它似乎根本不影响屏幕坐标系。目前它已经设置好,所以如果我在顶点应用一个对象 { 0,-1,0, 1,0,0, 0,1, 0, -1,0,0}我得到一个整个屏幕大小的菱形(换句话说,我的下限是 -1,上限是 +1)

如何更改我的 View ,使我的边界为 0,0 和 screen_width、screen_height?

最佳答案

好吧,我得到了答案,这两个函数确实满足了我的需要。

但是我在调​​用这些函数后加载了我的恒等投影矩阵。所以选项要么是不加载 ID 矩阵,要么是在加载单位矩阵后调用这些函数。因此,如果我希望我的坐标从 0-screensize 开始,我会执行以下操作:

- (void)drawFrame
{
[(EAGLView *)self.view setFramebuffer];

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrthof(0, self.view.frame.size.width, 0, self.view.frame.size.height, -1, 1);
glViewport(0, 0, self.view.frame.size.width, self.view.frame.size.height);

///DRAWING STUFF HERE

[(EAGLView *)self.view presentFramebuffer];
}

或者从上面的代码片段中删除以下代码

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrthof(0,self.view.frame.size.width, 0, self.view.frame.size.height,-1,1);
glViewport(0, 0, self.view.frame.size.width, self.view.frame.size.height);

然后将其添加到您的加载函数中,可能在您的 init- 中或从 nib 中唤醒,或者 viewDidLoad 或 viewWillAppear

似乎两者都不是必需的,但它现在工作得很好=]

关于ios - OpenGL 更改坐标设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003572/

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