2017-04-25 13 views
0

GRAPHIC_TESTSなしでiMX6 Yoctoにインストールしました。私はGRAPHIC_TESTSを有効にしようとするとPrevious question.OpenGLでUnixBenchをクロスコンパイルするには?

は、私はこのエラーを得た:

fatal error: GL/gl.h: No such file or directory 

だから私はOpenGLを追加は、次のようにMakefileのにパスを含める:

CFLAGS = \ 
-I/opt/poky/1.6.2/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include \ 
-march=armv7-a -mtune=cortex-a9 

フリースケールiMX6 yoctoサポートしていないように見えますOpenGL。したがって、この変更:

# GL_LIBS = -lGL -lXext -lX11 
# to this ↓ 
GL_LIBS = -lGLESv2 -lEGL -lGAL -lXext -lX11 

を、ソースコードを変更:

//#include <GL/gl.h> 
//#include <GL/glx.h> 
// to this ↓ 
#include <GLES2/gl2.h> 
#include <GLES2/gl2ext.h> 

それから私は、新しいエラーを得た:

src/ubgears.c: In function 'gear': 
src/ubgears.c:163:17: error: 'GL_FLAT' undeclared (first use in this function) 
    glShadeModel(GL_FLAT); 
       ^
src/ubgears.c:163:17: note: each undeclared identifier is reported only once for each function it appears in 
src/ubgears.c:168:12: error: 'GL_QUAD_STRIP' undeclared (first use in this function) 
    glBegin(GL_QUAD_STRIP); 
      ^
src/ubgears.c:182:12: error: 'GL_QUADS' undeclared (first use in this function) 
    glBegin(GL_QUADS); 
      ^
src/ubgears.c:267:17: error: 'GL_SMOOTH' undeclared (first use in this function) 
    glShadeModel(GL_SMOOTH); 
       ^
src/ubgears.c: In function 'reshape': 
src/ubgears.c:320:17: error: 'GL_PROJECTION' undeclared (first use in this function) 
    glMatrixMode(GL_PROJECTION); 
       ^
src/ubgears.c:327:17: error: 'GL_MODELVIEW' undeclared (first use in this function) 
    glMatrixMode(GL_MODELVIEW); 
       ^
src/ubgears.c: In function 'init': 
src/ubgears.c:341:14: error: 'GL_LIGHT0' undeclared (first use in this function) 
    glLightfv(GL_LIGHT0, GL_POSITION, pos); 
      ^
src/ubgears.c:341:25: error: 'GL_POSITION' undeclared (first use in this function) 
    glLightfv(GL_LIGHT0, GL_POSITION, pos); 
         ^
src/ubgears.c:343:13: error: 'GL_LIGHTING' undeclared (first use in this function) 
    glEnable(GL_LIGHTING); 
      ^
src/ubgears.c:349:21: error: 'GL_COMPILE' undeclared (first use in this function) 
    glNewList(gear1, GL_COMPILE); 
        ^
src/ubgears.c:350:27: error: 'GL_AMBIENT_AND_DIFFUSE' undeclared (first use in this function) 
    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); 
         ^
src/ubgears.c:366:13: error: 'GL_NORMALIZE' undeclared (first use in this function) 
    glEnable(GL_NORMALIZE); 
      ^
src/ubgears.c: At top level: 
src/ubgears.c:378:30: error: unknown type name 'GLXContext' 
       Window *winRet, GLXContext *ctxRet) 
          ^
src/ubgears.c: In function 'main': 
src/ubgears.c:561:4: error: unknown type name 'GLXContext' 

このコードは、おそらく唯一のOpenGLないOpenGLESのために使用します。

誰かがこれについて考えている場合は、それを共有してください。

更新:

ありYoctoでglxgears -infoある、と私はhereでソースコードを確認してください。 OpenGL ESではなくOpenGLによって書かれました! iMX6はOpenGL ESのみをサポートすると思われます。使い方?

解決策: 私の間違いでした。私は間違ったOpenGLのlibsとヘッダーを示しました。

答えて

1

OpenGL ESプラットフォーム用のOpenGLコードをコンパイルしようとしているようです。 2つは互換性がないので動作しません。

+0

フリースケールのiMX6 GPUはOpenGL ESのみをサポートしていますので、OpenGL ESへのOpenGLの変換に関するドキュメントはありますか? – Jiu

+0

文書はありません - それは簡単な変換ではありません(OpenGLの多くの機能はOpenGL ESには存在しません。特に2.0以降は固定機能のパスを削除しました)。使用している関数に基づいて、コードが固定関数ロジックを使用しているように見えるので、2.0ではなくOpenGL ES 1.1を見てみましょう。 – solidpixel

+0

また、コードを修正するだけでなく、モデルデータを変更する必要があります。 GL ESには存在しないGL_QUADS(および関連する)コードを使用しているようです。モデルを三角形分割し、GL_TRIANGLESを使用する必要があります。 – solidpixel

関連する問題