我目前正致力于游戏开发课程的最终编程项目,并选择将C ++和OpenGL用于程序的3D渲染方面(尽管事实上我对它没什么经验)。
我正在使用它直到现在绝对没有严重错误,然后离开了几天。但是当我回来时,我开始使用我使用过的少量GLfloat变量来获得各种“C4430 - Missing Type Specifier”错误。
这是我以前的定义,直到我今天重新加载才能正常工作:
#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:gl.h包含在glew.h之前”,因为在猜测中,glew包含gl.h本身。但是任何改动都会带来以前的类型指定错误。
令我困惑的是,如果glew包含GL.h,那么这些类型说明符也不会包括在内吗?我将继续进行方法编码而无需暂时进行测试,但需要能够测试我即将完成的工作。有人可以提供帮助或建议吗?
答案 0 :(得分:2)
#include <Windows.h>
#include <gl/GL.h>
#include <gl/glut.h>
#include <gl/glew.h>
这是包含这些标题的错误顺序。
GLEW(或者你正在使用的任何OpenGL加载器)总是。你从不包含gl.h
一个OpenGL加载程序头文件;你只需要包含他们的(glew.h
)。它出现在OpenGL或OpenGL工具的所有其他标题之前。
接下来是FreeGLUT的标题。之后......你根本不应该包括window.h
,除非你正在做一些特定于Windows的代码。如果你是,你可以在FreeGLUT之后加入它。