19

私は自分のシンプルなエンジンをMacで動作させるのに苦労して一日を過ごしました。私はSDLを動作させていますが、問題を引き起こすのはopenglだけです。エンジンは最新のopengl(シェーダーベース)を使用しているため、GLEWが必要です。私はそれをインストールするためにfinkからMacPortsまですべてを試しましたが、何も機能しません。

私がこれまでに経験した中で最も成功したのは、ソースから構築することです。最初に'GL/glu.h' no such file or directory found.、「インクルードの名前をに変更し、OpenGL/glu.hその問題を修正した」というエラーが発生しました。しかし今、私はこのエラーを受け取りますld: unknown option: -shared。私はこの時点で完全に立ち往生しています。

また、誰かがそれを行う方法を知っているなら、Idはむしろ静的ビルドです。

4

6 に答える 6

32

Homebrewを使用して作業を行う ことができます。

brew install glew
于 2013-08-13T23:21:06.183 に答える
15

エンジンは最新のopengl(シェーダーベース)を使用しているため、GLEWが必要です

GLEWは、最新のOpenGL機能を使用するための前提条件ではありません。これは、拡張機能をロードする方法であり 1つだけではありません。MacOS Xを使用しているので、サポートされているOpenGLのバージョンはOSと使用可能なフレームワークによって完全に決定されるため、拡張システムはとにかくほとんど役に立ちません。AppleはOpenGLドライバを独自に開発しており、それらが提供する拡張機能は、OpenGL仕様にない機能(ベンダー固有およびEXT)用のものだけです。必要なのは、十分に新しいバージョンのOpenGLフレームワークです。2006年以降にリリースされたMacOSXならどれでもそれを行うことができます。

于 2012-09-01T18:19:21.430 に答える
6

アップデート20180912-GLEWを使用しないでください。トラブルの価値はありません...


ソースから使用してGLEWをインストールしました。

GLEW_DEST = "$ HOME / local" OPT = "-march = core2-O2"install.allを作成します

最適化と宛先は異なる場合があります。これにより、libGLEW.a、libGLEWmx.a、およびそれらの対応するdylibが生成され$HOME/local/libます。pkgconfigサブディレクトリには、も含まれますglew.pc。GLEWは、他の人とも常にうまく機能するとは限りません。のようなグローバルを設定する必要があります。また、glewExperimental他のヘッダーを含める順序に注意する必要があります:<OpenGL/gl3.h>または<glfw.h>など。

アドバイスがあれば、最新のGLプログラミングのSDLを忘れてください。OS Xで純粋で最新のGLを使いたい場合は、-次のようなことを検討してください。

#if defined (__APPLE_CC__)
#include <OpenGL/gl3.h>
#else
#include <GL/gl3.h>       /* assert OpenGL 3.2 core profile available. */
#endif

#define GLFW_INCLUDE_GL3  /* don't drag in legacy GL headers. */
#define GLFW_NO_GLU       /* don't drag in the old GLU lib - unless you must. */

#include <GL/glfw.h>      /* simple and easy to use. omit legacy GL. */

GLFWのインストールも非常に簡単です。

> env PREFIX = "$ HOME / local" CFLAGS = "-march = core2 -O2" make cocoa cocoa-dist-install

繰り返しますが、設定は異なる場合があります。


20160412:他の人が指摘しているように、SDLに関する私のコメントは古くなっています。特に、まだ別のエンジンに取り組んでいる場合。glfw3は、OSXで最新のOpenGLアプリを作成するためのより簡単な方法であると私は主張します。それは非常によく書かれ、維持されているコードであり、GLとイベント処理に(正しく!)狭い焦点を当てています。明らかに、「エンジン」の観点から、SDL2はポータブル拡張ビデオAPI、オーディオAPI、スレッドAPIなどを提供しています。C11およびC ++ 11では、スレッドAPI抽象化レイヤーでさえおそらく冗長です。

GLEWは、ユーザーの広範な介入なしに複数のコンテキストを処理できないという点で問題があります。これは、コアプロファイルAPIを提供し、「ファンクションポイント」をロードする必要がないOSXの問題ではありません。IIRC、GL on X(DRI?)にもこれがありますが、私はそれについて間違っているかもしれません。そこに他のローダーがあります。私はまだそれらすべてを支配するのを待っています。これにより、必要に応じて複数のコンテキストに対して異なる関数ポインターがロードされ、最新のglから生成できる正しいディスパッチにスレッドローカル(またはpthreadキー)が使用されます。 Khronosからの.xml、または誰でも...


20180912

今のところ最も簡単なアプローチは、GLFWを使用してコンテキストを提供し、GLADを使用してGL関数ポインターを解決することだと思います。唯一の欠点は、複数のGLコンテキストを効果的に管理できないことです。これは、GLFWが現在デモで使用しているものです...この時点でGLEWを完全に忘れてしまいます。

于 2012-09-03T17:22:21.057 に答える
3

MacPortsは、これらのライブラリとその依存関係をインストールする必要があります。

sudo port install glew +universal
sudo port install libsdl +universal

ゲームをビルドするときは、ビルドとリンクの両方のステップでg++を呼び出すのが最善です。MacPortsによってインストールされたヘッダーとライブラリを見つけるには、/ opt/localを参照する必要があります。必要に応じて、.aファイルを静的にリンクすることもできます。

g++ -c -O3 -I/opt/local/include main.cpp -o main.o
g++ main.o /opt/local/lib/libSDL.a /opt/local/lib/libSDLmain.a /opt/local/lib/libGLEW.a -o mygame

コマンドラインからビルドする場合は、Makefileを使用してmakeを使用してビルドすることをお勧めします。

于 2013-08-13T22:49:10.827 に答える
2

http://glew.sourceforge.netにアクセスして、ZIPファイルをMacに直接ダウンロードすることをお勧めします。次に、Finderに移動し、glew.hと入力してファイルを表示し、コントロールクリックして情報を取得し、ファイルへのパスをコピーします。#include <GL/glew.h>次に、依存関係を含むそれぞれのプログラムファイル(commons.hなど)に移動し、次のように変更します。

#include <path/to/file/that/you/just/copied/glew.h>  

次に、プログラムを再度コンパイルしてみてください。今回は、GLEWエラーが発生しないはずです。

于 2014-10-29T04:27:17.207 に答える
1

上記の答えのどれも私が探していたものを私に与えませんでした:静的なGlew依存関係でセットアップとXcodeプロジェクトへの迅速な方法。

  1. ここからGLEWソースをダウンロードしますhttp://glew.sourceforge.net/
  2. タイプ

    $sudo make install 
    

    解凍されたディレクトリから(動的にリンクしたい場合は、これにより.dylibがインストールされます)。CMakeをインストールする必要があります。

  3. .a静的ライブラリを/usr/ local /lib/からXCodeプロジェクトにコピーします
  4. ターゲットのXcodeビルド設定の「HeaderSearchPaths」を更新して、ヘッダー(通常は/ usr / local / includeに配置)を含めます。または、ヘッダーを自分のプロジェクトにコピーするだけです。
于 2017-08-15T20:23:10.383 に答える