如何解决我不赞成使用的gluOrtho2D()?

问题描述 投票:2回答:3

我已经调用了现有代码(OS X,Obj-C,NSOpenGLView):

gluOrtho2D(0.0, newSize.width, newSize.height, 0.0);

效果很好,只是我收到了不赞成使用的函数警告,敦促我改用GLKMatrix4MakeOrtho()。好的-但是如何?我似乎甚至找不到该功能的存在。我包括:

#import <OpenGL/gl.h>
#import <OpenGL/glu.h>

并且Xcode不知道该名称的功能。我的OpenGL参考手册中没有提到它,或者确实没有提到任何前缀为GLK的函数;那里发生了什么事?然后,如果我设法找到该函数并包括正确的头并针对需要链接的对象进行链接,那么对GLKMatrix4MakeOrtho()的等效调用将与对gluOrtho2D()的调用进行相同的操作是什么?我尝试了Googling,发现许多热门歌曲表明其他人也收到了同样的弃用警告,但我找不到任何人说如何解决此问题...

macos opengl
3个回答
4
投票

GLKMatrix4MakeOrtho()所需的包含是:

#include <GLKit/GLKMatrix4.h>

然后,使用与glOrtho()相同的参数调用函数,例如:

GLKMatrix4 orthoMat = GLKMatrix4MakeOrtho(-1.0f, 1.0f, -1.0f, 1.0f, -1.0f, 1.0f);

如何使用取决于您使用的OpenGL类型。对于具有旧矩阵堆栈的固定功能,可以使用例如:

glLoadMatrix(orthoMat.m);

使用可编程管道,通常通常以统一的方式加载它:

glUniformMatrix4fv(loc, 1, GL_FALSE, orthoMat.m);

2
投票

哇,这是一个非常不寻常的建议。GLKMatrix4MakeOrtho()not替代GLKMatrix4MakeOrtho();如果要将应用程序移植到OpenGL 3.2或更高版本,则将在此处使用该功能。但是,该端口将是比仅更改一个调用更大的任务,因为OpenGL 3.2不支持OpenGL早期版本(例如gluOrtho2D())中的任何即时模式API。

最重要的是,只要您继续使用OpenGL 1.x / 2.x API,就需要忽略此警告。


1
投票

这里是在glBegin()macOS 10.15上禁用OpenGL弃用警告的一种选择:

© www.soinside.com 2019 - 2024. All rights reserved.