我正在尝试学习如何在OpenGL中编写着色器代码。我安装了所有必要的组件,如GLUT,并将GLee.h添加到我的项目中。但是,我在Visual Studio 2013中收到错误,指出无法找到文件glx.h。这是GLee.h代码中的位置:
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <GL/gl.h>
#elif defined(__APPLE__) || defined(__APPLE_CC__)
#define GL_GLEXT_LEGACY
#include <OpenGL/gl.h>
#else // GLX
#define __glext_h_ /* prevent glext.h from being included */
#define __glxext_h_ /* prevent glxext.h from being included */
#define GLX_GLXEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glx.h>
#endif
我不明白为什么最后一行显示为自从我运行win7以来需要首先包含的内容。即使我的操作系统是64位Visual Studio 2013版本是32位,所以VS2013应该识别#ifdef WIN32并运行该代码是有道理的,但事实并非如此。我尝试下载要求的文件,但后来VS2013只是要求更多,在几个文件后我放弃了该策略。我尝试谷歌搜索这个答案,找不到任何解决这个奇怪问题的东西,因为如果它是VS2013的问题,我会认为这是常见的事情。任何想法如何解决这个问题?
答案 0 :(得分:1)
第一行是错误的。
只需在WIN32中添加一个下划线,如下所示:
#ifdef _WIN32
编辑:在旁注中,我建议使用GLEW而不是GLee。这些天GLee似乎没有积极更新,并且(根据他们的SourceForge页面),只支持OpenGL 3.0。而GLFW定期更新,并支持OpenGL 4.5以外的所有内容。
答案 1 :(得分:0)
显然,Visual Studio定义_WIN32
但不定义WIN32
。 MinGW定义了WIN32
和_WIN32
。如果所有其他方法都失败了,您可以定义WIN32
。有关详细信息,请参阅this question。