を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とヘッダーを示しました。
フリースケールのiMX6 GPUはOpenGL ESのみをサポートしていますので、OpenGL ESへのOpenGLの変換に関するドキュメントはありますか? – Jiu
文書はありません - それは簡単な変換ではありません(OpenGLの多くの機能はOpenGL ESには存在しません。特に2.0以降は固定機能のパスを削除しました)。使用している関数に基づいて、コードが固定関数ロジックを使用しているように見えるので、2.0ではなくOpenGL ES 1.1を見てみましょう。 – solidpixel
また、コードを修正するだけでなく、モデルデータを変更する必要があります。 GL ESには存在しないGL_QUADS(および関連する)コードを使用しているようです。モデルを三角形分割し、GL_TRIANGLESを使用する必要があります。 – solidpixel