您如何使用opengl函数?

时间:2019-11-30 09:05:15

标签: xcode opengl glsl

我正在尝试为Mathematics for 3D Game Programming and Computer Graphics这本书提供源代码。我已经在“构建阶段”中链接了OpenGL.Framework,并包含了(不确定我需要哪一个)

#include <OpenGL/OpenGL.h>
#include <OpenGL/gl.h>

现在我得到

Use of undeclared identifier 'Sqrt'
Use of undeclared identifier 'InverseSqrt'
Use of undeclared identifier 'fabs'

我猜想这与未正确设置OpenGL有关吗? 作者在书中提到使用GLSL,但没有详细介绍。我是OpenGL新手。

2 个答案:

答案 0 :(得分:3)

不是xcode编码器,而是 C ++ 中的fabs,sqrt位于math.h中,并且如果InverseSqrt的意思是sqr,那么您可以尝试进行修复像这样:

#include <math.h>
#define Sqrt sqrt
#define InverseSqrt(x) (x*x)

某些环境则希望这样做:

#include <math>
#define Sqrt sqrt
#define InverseSqrt(x) (x*x)

但是,正如评论中提到的那样,这些功能与OpenGL无关,因此它们最有可能在您包含/链接了任何内容的某些lib中使用...而忘记了包含您应包含的某些标头...

[Edit1]

如果InverseSqrt的意思是1/sqrt(x)(英语术语有时听起来很奇怪),请使用

#define InverseSqrt(x) (1/sqrt(x))

答案 1 :(得分:1)

inversesqrt(无大写)是GLSL中的内置函数,而fabs是C中的函数,sqrt两种语言都存在。 Xcode可以编译C / C ++,但是您必须编写代码才能编译GLSL。