我目前正在为游戏开发课程做一个最终的编程项目,并选择在程序的 3D 渲染端使用 C++ 和 OpenGL(尽管我对此几乎没有经验)。
到目前为止,我一直在使用它,完全没问题,没有出现严重错误,然后放了几天。但是当我返回时,我开始使用我使用的几个 GLfloat 变量得到各种“C4430 - 缺少类型说明符”错误。
这是我以前的定义,在我今天重新加载之前效果很好:
#include <gl/glew.h>
#include <gl/glut.h>
... Other variable and object definitions
const GLfloat DEFAULT_X = -5.0f; //C4430: missing type specifyer on all 3 lines and
const Glfloat DEFAULT_Y = -4.0f; //C2146: syntax error : missing ';' before identifier 'DEFAULT_Y' on this line only
const GLfloat DEFAULT_Z = -20.0f;
GLfloat viewX = DEFAULT_X; //This line is fine
GLfloat viewY = DEFALUT_Y; //Resulting C2065: Undeclared identifyer
GLfloat viewZ = DEFALUT_Z; //on both these lines
为了解决这个问题,我开始改变#includes(也许是一种愚蠢的方法,但此时我很困惑)并发现添加Windows.h和gl/GL.h,正如一些人所建议的那样,除了问题之一。
#include <Windows.h>
#include <gl/GL.h>
#include <gl/glew.h>
#include <gl/glut.h>
新问题是尝试在 gl/glew.h 之前使用 gl/GL.h 会引发错误“C1189:glew.h 之前包含 gl.h”,因为猜测,glew 包含 gl.h 本身。但是任何更改都会带回以前的类型指定器错误。
令我困惑的是,如果 glew 包含 GL.h,那么这些类型说明符是否也包含在内?我将继续在没有测试的情况下继续进行方法编码,但需要能够尽快测试我正在做的事情。任何人都可以提供帮助或建议吗?