使用GLEW

时间:2015-08-20 01:17:54

标签: android android-ndk sdl glew

这是一个编译问题,特别是在使用NDK引用共享库时。

我的SDL2 + GLEW程序在我的mac上正常运行(显然有不同的makefile / build系统),我在Android上运行正常(只要我不使用GLEW)。但是现在我需要使用GLEW,并且无法找到关于如何/在哪里/什么发生的直接参考,包括NDK中的库。

无论如何 - 在我的android-project文件夹中,我有jni/src/Android.mk(我认为这是我应该看的地方?)

LOCAL_SHARED_LIBRARIES := SDL2 SDL2_image的一行,我认为这是我应该添加GLEW的神奇变量?但那甚至是什么?这怎么知道GLEW甚至意味着什么?它应该是-lGLEW吗? (最后一个问题是修辞 - 我已经尝试了所有这些并且没有任何作用)。我甚至尝试完全评论该行并获得相同的构建错误:

jni/src/src/main.cpp:8:21: fatal error: GL/glew.h: No such file or directory
#include <GL/glew.h>

我几乎完全迷失了...有没有人有任何我可以研究的资源?

另外,作为一个说明,我也更喜欢解释为什么/正在发生什么,因为我确定我会继续包括其他内容。

编辑: 正如Drop在下面指出的那样,这不是一个链接问题 - 编译器需要知道在哪里找到GL/glew.h。所以我将/usr/local/Cellar/glew/1.12.0/include添加到LOCAL_C_INCLUDES :=行,这样就行了。但现在,编译glew.h - GL/glu.h: No such file or directory时出错了。

现在,

  1. 是否有比使用整个/usr/local/Cellar/glew/1.12.0/include行硬编码更通用/更干净/更好的方法让编译器知道GLEW在哪里? glew.h应该位于更一般的地方吗?
  2. 为什么我在编译android时只需要这个? mac build不需要这些标志......
  3. 我无法在任何地方找到明确的文档,但在使用GLEW编译mac版本时,我没有还需要安装GLU和GLUT(如GLEW&#39) ; s网站暗示......),此外,GLU和GLUT都不能通过brew作为包裹提供。
  4. 我一直在四处寻找有关此事的文件,但我觉得我不知道自己不知道什么。您是否可以提供一些见解,我可以在哪些方面出错?关于如何在各种平台上引用包含和库和内容?

1 个答案:

答案 0 :(得分:0)

韦尔普。事实证明,没有一种直接的方法可以将GLEW / GLU / GLUT包含在NDK中? (我有一个问号,因为我还不是100%肯定......)。

但是,我找到了问题的解决方案,那就是 - 我不需要GLEW(或GLU,或GLUT等等)!

就像我说的那样,我正在构建OSX android,所以我使用的是OpenGL 2.1 OpenGLES2。

我选择这样做是因为我被告知OpenGLES2只是OpenGL2的一个子集,所以我没想到任何问题(只要我没有在OpenGL 2.1中使用任何func)。

我需要GLEW因为我想使用framebuffers(glGenFramebuffers等...),它只在OpenGL 2.1中作为扩展名存在。一旦我开始工作,我认为我需要在Android上对OpenGLES2进行相同的扩展争论 - 结果我根本就没有!它只是有点开箱即用! (好吧,一旦你让NDK工作,并与OpenGL联系起来,等等等等)。