2011-08-12 3 views
1

GLEEをコードに実装して、インクルードされたファイル内で使用される拡張機能をロードするにはどうすればよいですか?GLEE w/includesを使用していますか?

例えば、私はcygwinとGCCを使ってWindowsビルド環境を持っており、GLEE、GLUT、およびopengl32のライブラリにリンクしています。ザ・である私のメインのファイルに含まれて

..

#include <windows.h> 
#include <stdio.h> 

#include <GL/GLee.h> 
#include <GL/glut.h> 

#include "SampleUtils.h" 
#include "LineShaders.h" 

SampleUtils.hは、このようなSampleUtils.cppに実装されているglCreateShader、としてOpenGL拡張を利用する方法を宣言し

。しかし、これらのファイルをビルドしようとすると、拡張機能は宣言されません。私はいくつかのアプローチを試みました。このような宣言されていないエラーGLEEが既に含まれているという事実に関係しているように見えるエラーの長いリストをスロー

#include <GL/GLee.h> 

になりSampleUtils

#include <GL/gl.h> 
#include <GL/glext.h> 

に含むよう

これらのメソッドをメインファイルに実装することで同じ拡張機能をロードできますが、インクルードファイルからロードすることはできません。これはどのように処理されますか? GLee.hで

+1

Linux、Win32などのためにビルドしていますか?また、GLeeは放棄されているようですので、あなたは[何か他のもの](http://www.opengl.org/wiki/Extension_Loading_Library)に行きたいかもしれません。 –

+1

Win32。 Genpfaultは私をまっすぐにしました。インクルードされたファイルに対してWIN32が定義されていませんでした。しかし、おそらく私の他の質問から拾ったように、私はまた、OpenGL ES with Androidで働いています。 Android環境は事前設定されていましたが、今ではWindowsの設定を同じようにしようとするような基本的な問題がたくさんあります。学ぶたくさん。 – olo

答えて

0

ルック:あなたがいないを行う#include "GLee.h"どこを55

#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 

#includegl.hglext.h、またはwindows.hに持っています。

+0

はい。これは私がドキュメントから期待していたものですが、SampleUtilsにGlee.hを含めるだけで、g ++はエラーの長いリストを投げます。例えば/usr/lib/gcc/i686-pc-cygwin/3.4.4/ ../../../../include/w32api/GL/GLee.h:827:エラー: 'XID 'はタイプを指定しません /usr/lib/gcc/i686-pc-cygwin/3.4。 4 /../../../../ include/w32api/GL/GLee.h:832:エラー: 'XID 'は型名を指定していません /usr/lib/gcc/i686-pc-cygwin/3.4.4 /../../../../include/w32api/GL/GGLee.h:836:エラー: 'Bool 'はタイプなどの名前をつけません。 – olo

+0

私もGLをすべて削除しようとしましたこれらのファイルが親から継承されている場合は、インクルードされたファイルからGleeヘッダを削除します。しかし、これは、あなたが期待しているように、宣言されていないエラーのみを引き起こします。したがって、インクルードされたファイルのGLヘッダーはエラーになり、Gleeヘッダーだけでエラーが発生し、GLヘッダーまたはGleeヘッダーもエラーになりません。どのアプローチがインクルードで実装されるはずですか? - #を含む? – olo

+0

@olo:ヒットライン827の場合、ヘッダーはGLXパスを取っています。つまり、WIN32が定義されていません。あなたの 'gcc'呼び出しに' -DWIN32'を追加するか、GLEEを#includeする前に手動で '#define WIN32'を試してみてください。将来コンパイラのエラーログをあなたの質問に入れておくと便利です。 – genpfault

関連する問題