我正在尝试为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新手。
答案 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。